我构建一个指令,需要根据通过作用域传递给它的值来初始化一些数据。问题是当我尝试初始化链接函数中的数据时,传入的值还不可用。反正只有当传入的值可用时才运行初始化?我考虑过按照以下代码使用手表,但它似乎很乱(并且似乎无论如何都无法工作)。
.directive('etMemberActivitySummary', [function () {
return {
restrict: 'E',
templateUrl: '<div>My template</div>',
transclude: false,
scope: {
memberModel: '='
},
link: function(scope, element, attrs, controller) {
var watcher = scope.$watch(
function() {
return scope.memberModel
},
function(value) {
console.log(value);
if (value != null) {
console.log('Watch');
console.log(value);
watcher();
// Perform initialization based on scope.memberModel here
}
});
}
}
}])
有没有正确的方法呢?如果有帮助,传入的值本身就是从Web服务中检索的。
更新1
原来,如果我把一个ng-if =&#34; ctrl.memberModel&#34;在如下的指令用法和摆脱所有手表的东西,它的工作原理。这是最好的方法吗?
<et-member-activity-summary member-model="ctrl.memberModel" ng-if="ctrl.memberModel"></et-member-activity-summary>