我正在使用角度单向绑定从控制器到指令。当我更新指令中的值时,它不应该更新控制器中的值。但它是以双向约束的方式工作的。有人能找到我的错误。角度指令单向绑定更改控制器中的值
angular.module("myApp",[])
.directive("myDirective",['$timeout', function ($timeout) {
return {
scope: {myValue: "&myAttribute"},
template: '<input type="text" ng-model="myValue().name">',
link: function (scope, iElm, iAttrs) {
var x = scope.myValue();
console.log(x);
$timeout(function(){
x.name= "directive";
},4000);
}
};
}]).controller("myController", function ($scope, $timeout) {
$scope.someObject = {name: "test"};
$timeout(function(){
$scope.someObject.name= "controller";
},2000);
});
http://plnkr.co/edit/9wihx1VYgKoTK00awN67?p=preview
我认为,符号是要创建一个返回父范围someObject的值的函数,https://docs.angularjs.org/api/ng/service/$编译,所以这不是单向的。 – ryansstack
是的,并返回一个getter函数。所以它应该是单向的 –
虽然它获取对象的引用,所以指令和父范围都具有相同的引用,并且对对象属性的任何更改都将自然显示在两个位置 – ryansstack