【发布时间】:2015-05-07 14:48:29
【问题描述】:
假设我有一个名为 my-directive 的自定义指令,它具有默认范围设置(scope: false,这意味着它共享包含该指令的(父)控制器的范围),并且我有一个函数 @987654323 @,附加到控制器的作用域。我想知道在自定义指令的链接函数中是否可以使用scope.$watch 来观察my_function 何时执行?
这里是一个说明代码:
<div ng-controller="MyCtrl">
<my-directive></my-directive>
</div>
控制器:
app.controller('MyCtrl', function($scope) {
$scope.my_function = function() {
...
}
});
自定义指令:
app.directive('myDirective', function() {
return {
restrict: 'E',
[scope: false,]
...
link: function(scope, element, attrs) {
// can I scope.$watch my_function here to check when it executes?
}
}
});
更新:
这是我提出这个问题的原因:
当my_function(本质上是一个通过$http.get 的检索函数)执行时,它应该更新一个对象,比如my_data。如果我尝试scope.$watchmy_data,可能会出现my_function 执行并且my_data 没有变化的情况(例如当我在my_data 中编辑条目并决定无论如何取消更新时) ,因此我想在链接函数中执行的部分代码没有被执行。所以我想确保我在链接函数中的代码在my_function执行时执行,无论my_data是否有变化。
【问题讨论】:
-
调用
my_function的用例是什么? -
@gustavohenke 检查我上面的更新。
标签: angularjs angularjs-directive