这是我正在使用的当前代码
App.directive('afterRender', ['$timeout', function ($timeout) {
var def = {
restrict: 'A',
terminal: true,
transclude: false,
link: function (scope, element, attrs) {
$timeout(scope.$eval(attrs.afterRender), 0);
}
};
return def;
}]);
我这样称呼它
after-render="disableFullPage"
现在,我当前代码面临的问题是disableFullPage函数被调用为罚款。但是angular不会渲染任何数据。所以如果我放
{{message}}
没有被渲染。另外,如果我删除了后期渲染,渲染效果很好。有人可以帮我解决我做错的事情吗,如果可能的话,请编辑上面的代码并提供简短的说明,以使我更好地理解,因为我还比较陌生。
我看到这里发生了两件事。
首先,您要进行设置terminal: true
,以防止进一步解释指令和表达式。
根据文档:
如果设置为true,则当前优先级将是将要执行的最后一组指令(由于未定义在相同优先级上的执行顺序,因此当前优先级的任何指令仍将执行)。请注意, 指令模板中使用的表达式和其他指令也将从执行中排除。
其次,$parse
将在当前作用域的上下文中评估您给出的任何表达式。就像您刚刚编写了一行javascript。
在上面的示例中after-render="disableFullPage"
,假设disableFullPage
是一个函数,则将不会发生任何事情。您需要像通常调用该函数一样添加括号:
after-render="disableFullPage()"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句