我正在尝试在父控制器和指令之间建立 2 路绑定。如果我将范围设置为 '=' 并且我只使用实际属性本身,这将有效。但是,如果我使用此属性派生另一个值,则该值不会正确更新。我怎样才能将其设置为更新。
var app = angular.module('app', []);
app.controller('myCtrl', function($scope){
$scope.ctrlVal = 'one';
$scope.updateDirective = function(){
$scope.ctrlVal = 'two';
}
});
app.directive('customDirective', function(){
return{
restrict: 'E',
template: '<div>{{input}} - {{derived}}</div>',
scope:{input: '='},
link: function(scope, elem, attrs, ctrl){
switch(scope.input){
case 'one':
scope.derived = '1';
break;
case 'two':
scope.derived = '2';
break;
}
}
}
})
当我通过 ng-click 触发控制器上的 updateDirective 函数时,{{input}} 部分会更新,但 {{derived}} 部分不会更新
一个小提琴来说明我正在尝试做的事情:http: //jsfiddle.net/m3k2w/8/
编辑:更新小提琴显示下面的答案:http: //jsfiddle.net/m3k2w/10/