我的自定义指令看起来像这样:
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
。
还有其他方法吗?我应该总是为该任务定义额外的观察者吗?
答案 0 :(得分:0)
当您使用" data"将对象传递给指令时,您不应该这样做。属性。您是否有机会将原始值传递给指令(String,int等)?
在这种情况下,指令中的范围最终会带有原始值的副本,并且在指令外部所做的更改不会影响指令范围内的副本。
要解决此问题,请使用
之类的包装器对象$scope.data = {
val: "foo"
};
然后将其传递给指令。当它传递一个对象引用时,外部所做的更改会在您更改同一对象时反映在指令中。