$parent变量在ng-include上从单独的控制器设置时已损坏
$parent variable corrupted when set from separate controller on ng-include
我很难理解为什么下面的代码完全停止工作。基本上,当我试图从$parent范围中使用ng-show来隐藏和显示ng-include时,效果很好。例如,在附加的plnkr中,如果你点击"新建",然后点击"取消",或者只点击"切换",ng include的可见性就会被适当地设置。
但是,如果我尝试从子作用域Cancel设置可见性,它会工作一次,然后完全失败。当您点击ng include中的"Cancel"按钮时,控制可见性的父作用域中的变量"createItemVisible"会以某种方式损坏。
我读过很多关于$parent-scope的其他帖子,但我从来没有看到过一次又一次提到它的工作原理。
plnkr在这里http://plnkr.co/edit/1tNpTzEBnTRHgvx6o0dc?p=preview
这是index.html代码:
<div ng-controller="MainCtrl">
<h3>Items</h3>
<button type="button" class="btn btn-primary" ng-click="createItem()">Create New Item</button>
<button type="button" class="btn btn-alert" ng-click="createItemVisible=!createItemVisible">Toggle</button>
<button type="button" class="btn btn-danger" ng-click="createItemVisible=false">Cancel</button>
<div ng-include="'inlineform.html'" ng-show="createItemVisible"></div>
</div>
以下是inlineform.html代码:
<div ng-controller="ItemDetailCtrl">
<button type="button" class="close" ng-click="cancelItemDetail()">×</button>
<h3>New Item</h3>
<button ng-click="cancelItemDetail()" class='btn btn-danger'>Cancel</button>
</div>
这是脚本:
var myApp = angular.module('myApp', []);
myApp.controller('MainCtrl', function($scope) {
$scope.createItemVisible = false;
$scope.createItem = function() {
$scope.createItemVisible = true;
};
});
myApp.controller('ItemDetailCtrl', function($scope) {
$scope.cancelItemDetail = function() {
$scope.$parent.createItemVisible = false;
}
});
根据Ilan Frumer的评论,我能够更好地理解不应该在作用域上使用基元。我创建了一个命名空间来保存我的变量。
var main = {
createItemVisible : false
};
然后我用作用域注册了这个名称空间。
$scope.main = main;
然后我相应地更新了任何参考资料。
这是更新的plnkrhttp://plnkr.co/edit/1tNpTzEBnTRHgvx6o0dc?p=preview
相关文章:
- 如何从jQuery设置控制器或全局变量的属性
- 为什么我们将控制器变量设置为等于“0”;这个“;在角度上
- 将外部控制器的范围变量设置为角度
- 设置AngularJS控制器属性不能是使用Coffeescript的最后一行
- 如何在多个控制器之间封装设置$scope值
- 在 AJAX 调用的 zend 控制器操作中正确设置会话
- 设置控制器动态角度
- 从控制器设置/获取服务中的数据
- 余烬控制器设置属性在操作
- 按控制器设置默认顺序
- 从控制器设置窗口字段值
- $parent变量在ng-include上从单独的控制器设置时已损坏
- 如何从AngularJS控制器设置值
- metro.js-将控制器设置为访问集合
- ExtJS 5:设置初始化的配置变量获胜'从控制器设置后不要粘住
- 如何从一个控制器设置一个服务的值,并使用该服务更新另一个控制器的值
- 如何从Rails控制器设置morris.js值
- 从控制器设置ng显示值,但我的代码不起作用
- 角度分页,通过控制器设置第一页
- 在视图中解析控制器设置的json字符串