在指令AngularJS中同时隔离和共享范围

时间:2015-07-23 19:52:01

标签: angularjs controller scope directive angular-directive

Angular的新手,所以不确定我是否以正确的方式提问。

所以我有表格。

<form ng-controller="myController" action="" method="get">
    <div myDirective> 
       <input ng-model="question.sex" value="male" type="radio">
       <input ng-model="question.sex" value="female" type="radio">
       <button ng-click="log(LogThisQuestionAnsware())"></button>
    </div>
    <div myDirective> 
       <input ng-model="question.agree" value="no" type="radio">
       <input ng-model="question.agree" value="yes" type="radio">\
       <button ng-click="log(LogThisQuestionAnsware())"></button>
    </div>
</form>

所以我的目标是记录当前的“问题”答案。点击按钮。

如何在myDirective中访问本地问题,与第二个指令分开,并且也在控制器范围内。

- [编辑:] -

好的,这几乎是我的情景。 http://jsfiddle.net/y5esnm09/5  如果选择了按钮,则每个按钮必须记录其自己的指令值,而不是两个无线电值。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您希望两个指令实例绑定到同一个问题对象,但是它们的范围彼此分开:

在指令和控制器之间设置双向数据绑定,例如:

<div my-directive question="question">
 <!-- the rest -->

angular.module('your.module').directive('myDirective', function() {
   return {
      scope: question: '=',
       //other props
   }

这将确保两个指令绑定到同一个问题对象,但具有各自独立的范围。

另一种方法是将scope属性设置为true,这样他们就可以创建控制器的子范围。

编辑:小提琴演示双向绑定:

http://jsfiddle.net/L0eqf4qe/

PS:我将myDirective转换为my-directive,angular会将蛇案翻译成camelCase给你。