5

我有指令 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}}
4

1 回答 1

10

我用工作版本创建了一个 plunker 。

你不需要穿上{{variable}}twoway=""twoway="ctrlTwoway"工作就行了。

另一件事是您声明绑定的方式。您正在使用=而不是'='.

另一件事是:尝试在指令中使用链接函数而不是控制器函数。如果您想操作 DOM 元素,这是一个很好的做法和正确的位置。

资源

我希望它有所帮助。

于 2013-10-24T14:48:47.157 回答