Javascript I';我想两个绑定一个指令';s范围,它似乎是唯一的单向边界?
我想做的很简单:双向绑定指令的作用域。这意味着给定一个具有Javascript I';我想两个绑定一个指令';s范围,它似乎是唯一的单向边界?,javascript,angularjs,angularjs-directive,angularjs-scope,prototypal-inheritance,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Prototypal Inheritance,我想做的很简单:双向绑定指令的作用域。这意味着给定一个具有$scope.name='Foo'的父控制器ParentCtrl,以及一个具有作用域:{name:'='}的指令我希望当我从指令的链接函数中更改scope.name='Bar'或从给定指令的控制器中更改$scope.name='Bar'时,ParentCtrl的模板将反映新的$scope.name,否则,它只是从父范围到指令范围的单向绑定。不幸的是,这不是我得到的。我是不是遗漏了什么?下面是一个plunker链接,说明了这个问题: 守则
$scope.name='Foo'
的父控制器ParentCtrl
,以及一个具有作用域:{name:'='}的指令
我希望当我从指令的链接函数中更改scope.name='Bar'
或从给定指令的控制器中更改$scope.name='Bar'
时,ParentCtrl的模板将反映新的$scope.name
,否则,它只是从父范围到指令范围的单向绑定。不幸的是,这不是我得到的。我是不是遗漏了什么?下面是一个plunker链接,说明了这个问题:
守则:
angular.module('docsSimpleDirective', [])
.controller('ParentCtrl', ['$scope', function($scope) {
$scope.name = "Bernie Sanders";
$scope.occupation = "Arsonist";
}])
.directive('myCustomer', function() {
return {
template: 'Name: {{name}} Occupation: {{occupation}}',
scope: {
name: '=',
occupation: '='
},
link: function(scope, element, attrs) {
scope.name = "Donald Drumpf";
scope.occupation = "Fascist pig";
scope.$apply();
}
};
});
模板:
<body ng-app="docsSimpleDirective" ng-controller="ParentCtrl">
Name: {{name}}, Occupation: {{occupation}}<br />
<div ng-controller="ParentCtrl">
<div my-customer name="name" occupation="occupation"></div>
</div>
</body>
姓名:{{Name},职业:{{occulation}
问题是您有多个ParentCtrl
实例,第一个实例在body上,然后在其中一个内部div上
因此,当您在范围变量上声明name
时,您是在将其声明为基元类型,因此内部控制器内的重写值将对$scope.name
值有新的引用。原型继承仅在对象
不在基元类型变量上时才发生
在第页定义ng模型时,应遵循dot规则
也不需要在指令链接函数内运行摘要循环。这最终会抛出错误。请从那里删除它。问题是您有多个ParentCtrl
实例,第一个实例在body上,然后在一个内部div上
因此,当您在范围变量上声明name
时,您是在将其声明为基元类型,因此内部控制器内的重写值将对$scope.name
值有新的引用。原型继承仅在对象
不在基元类型变量上时才发生
在第页定义ng模型时,应遵循dot规则
也不需要在指令链接函数内运行摘要循环。这最终会抛出错误。请从那里删除它。您在指令中创建了一个独立的作用域,为什么希望更改向上传播?因为双向绑定非常有用。我真正想问的是;指令可以进行双向绑定吗?哦,我想我理解你的错误-看看这个答案:这一个:你在指令中创建了一个独立的作用域,为什么你希望更改向上传播?因为双向绑定非常有用。我真正想问的是;指令可以双向绑定吗?哦,我想我理解你的错误-看看这个答案:还有这个: