指令中总是需要额外观察者?

时间:2014-12-06 11:37:31

标签: angularjs angularjs-directive

我的自定义指令看起来像这样:

App.directive('myDir',function() {
    return {
        scope: {data:"="},
        link: function(scope) {
            scope.model={
                data:scope.data
            };
            scope.$watch('data', function () {
                scope.model.data = scope.data;
            });
        }
    }
});

我必须定义watch以将已更改(外部指令)data复制到面向对象的model。 还有其他方法吗?我应该总是为该任务定义额外的观察者吗?

1 个答案:

答案 0 :(得分:0)

当您使用" data"将对象传递给指令时,您不应该这样做。属性。您是否有机会将原始值传递给指令(String,int等)?

在这种情况下,指令中的范围最终会带有原始值的副本,并且在指令外部所做的更改不会影响指令范围内的副本。

要解决此问题,请使用

之类的包装器对象
$scope.data = {
   val: "foo"
};

然后将其传递给指令。当它传递一个对象引用时,外部所做的更改会在您更改同一对象时反映在指令中。