angularjs控制器访问指令范围值
问题描述:
我有这个控制器与我的HTML代码中的指令。该指令具有我希望从父控制器访问并显示在html中的范围值。希望我的示例代码能够给你一个我想要实现的简单概述。angularjs控制器访问指令范围值
我知道这项工作使用$ rootScope.showvalue ='传递文本';在指导作品中,但不知道这是否是最好的解决方案。
app.directive('customdir', [function() {
return {
restrict: "E",
scope: {
showvalue: "="
},
link: function(scope, el, attrs) {
scope.showvalue = 'pass text';
}
};
}]);
app.controller('mycontroller', function($scope) {
alert($scope.showvalue);
});
<html>
<div ng-controller="mycontroller">
<custom-dir></custom-dir>
/* Show scope value from custom dir */
{{showvalue}}
</div>
</html>
答
父作用域属性
既然你绑定指令的分离scope属性通过showvalue
双向绑定,你可以简单的通过作为一个属性
<customdir showvalue="showvalue"></customdir>
<p>{{showvalue}}</p>
演示〜http://plnkr.co/edit/W5k0hgDElklseOvjwRsS?p=preview
父作用域属性
如果您希望HTML为<custom-dir>
,则需要更改e您的指令'customDir'
。
答
- 您可以通过属性将“showvalue”传递给指令。
- 您可以通过指令作用域的$ parent属性来设置值。例如。范围。$ parent.showvalue ='传递文字';
- 您可以使用emit事件将数据从子(指令)传递给父(控制器)。
- 您可以使用共享作用域直接将值设置为控制器作用域。 (不要在指令中指定范围属性)
由于某种原因,只有$ rootScope.showvalue ='pass text';作品。也许是因为控制器和指令是在两个单独的文件 – icode
你看看演示?它显然有效。分离文件没有区别 – Phil
是的,你的演示很好的清晰的例子。只是我的代码不工作。我想也许控制器是如何设置的。 – icode