我有指令myDirective,它有一个双向绑定隔离范围。 当用户单击按钮时,我想将隔离范围更改为值。 我以为隔离范围绑定到$scope,但我错了。 如何"抓取"该隔离范围并与之交互? 它们是否未附加到指令控制器的作用域?
angular.module("app", [])
.controller("myCtrl", function($scope){
$scope.ctrlTwoway = "Eggs";
})
.directive("myDirective", function(){
return {
scope: {
twoway: =
},
template: "<button ng-click="changeTwoway()">Change two way isolate scope</button>",
controller: function($scope, $element, $attrs){
$scope.changeTwoway = function(){
// get twoway from isolate scope, and update the value with "bacon"
// $scope.twoway = "bacon" doesn't work
// nor does $attrs.twoway = "bacon" work, either :(
};
}
}
});
和 HTML
...
<div my-directive twoway="{{ctrlTwoway}}"></div>
Current value: {{ctrlTwoway}}
我创建了一个带有工作版本的 plunker。
你不需要把{{variable}}
放在twoway=""
上.只需更改为twoway="ctrlTwoway"
即可工作。
另一件事是声明绑定的方式。您使用的是=
而不是'='
。
另一件事是:尝试在指令中使用链接函数而不是控制器函数。这是一个很好的做法,如果你想操作 DOM 元素,这是正确的地方。
源
我希望它有所帮助。