我已经创建了一个使用ngTransclude围绕某些内容创建div包装的指令。请看这个非常简单的示例:http://jsfiddle.net/DHzrr/1/
如果从HTML
中删除组元素<div ng-controller="TodoCtrl">
<form ng-submit="addTodo()">
<input type="checkbox" ng-model="checked">
</form>
<div ng-hide="checked">NOT CHECKED</div>
</div>
“ng-hide”监听器正在工作。所以我的group-directive吞下事件发出或隔离$ scope。我怎样才能做到这一点?
我认为只有在指令定义对象中使用scope:true属性时才会创建新的作用域。
答案 0 :(得分:2)
transclude: true
创建一个新的子范围,原型继承自父(TodoCtrl)范围。您可以通过以下三种方式之一解决问题:
ng-model="obj.checked"
和控制器中定义的对象属性:$scope.obj = {checked: false}
ng-model="$parent.checked"
ng-change="toggle()"
添加到input
,然后在控制器上定义一个函数:$scope.toggle = function() { $scope.checked = !$scope.checked }
另请参阅What are the nuances of scope prototypal / prototypical inheritance in AngularJS?,指令项“4. transclude: true
”