如何检测Angular指令链接函数中何时设置scope属性?

时间:2016-10-20 20:26:17

标签: javascript angularjs angularjs-directive

我构建一个指令,需要根据通过作用域传递给它的值来初始化一些数据。问题是当我尝试初始化链接函数中的数据时,传入的值还不可用。反正只有当传入的值可用时才运行初始化?我考虑过按照以下代码使用手表,但它似乎很乱(并且似乎无论如何都无法工作)。

.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>

0 个答案:

没有答案