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

Isolate and shared scope same time in directive AngularJS

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 每个按钮都必须记录其自己的指令值,而不是两个单选值(如果它们被选中)。

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

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

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

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

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

另一种方法是将 scope 属性 设置为 true,这样它们都会创建您的控制器的子作用域。

编辑:Fiddle 演示两种绑定方式:

http://jsfiddle.net/L0eqf4qe/

PS:我将myDirective转换为my-directive,angular将为您将snake-case转换为camelCase。