0

因此,由于这个问题,我有了不错的 removeDialog 指令:

更新指令内的 attrs 值 - 如何在 AngularJS 中进行

现在我开始玩孤立的范围。我注意到的第一件事是添加隔离范围破坏了 attrs.$observe。更改触发器时我没有收到通知。

homesApp.directive("removeDialog", function ($parse) {
    return {
        scope: {

        },
        restrict: 'A',
        link: function (scope, element, attrs, controller) {
            angular.element(element).on('hidden.bs.modal', function () {
                scope.$apply(function () {
                    scope.cancelRemove();
                });
            });
            attrs.$observe('trigger', function (newValue) {
                if (newValue) {
                    angular.element(element).modal('show');
                } else {
                    angular.element(element).modal('hide');
                }
            });
        },
        controller: 'DeleteController'
    };
});

你能详细说明为什么吗?

4

1 回答 1

2

的内容trigger不再绑定到外部范围。您需要在隔离范围内声明它:

scope: {
    trigger: '='
}

这将绑定scope.trigger到您在应用指令的元素上定义的实际表达式。

这样,attrs.$observe('trigger', function (newValue) {...}应该改为

scope.$watch('trigger', function (newValue) {
            if (newValue) {
                angular.element(element).modal('show');
            } else {
                angular.element(element).modal('hide');
            }
        });
于 2013-09-20T15:23:08.370 回答