在指令 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 演示两种绑定方式:
PS:我将myDirective
转换为my-directive
,angular将为您将snake-case转换为camelCase。
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 演示两种绑定方式:
PS:我将myDirective
转换为my-directive
,angular将为您将snake-case转换为camelCase。