假设我在父控制器中放置一个 Bootstrap 风格的 alert 框,用于提示错误,类似如下效果: !()[https://ww1.sinaimg.cn/large/006tKfTcjw1fbrff61vqcj308q03pglq.jpg]
<body ng-controller="ParentController as parentCtrl">
<!-- 这里有一个 alert ,用于显示错误 -->
<div ng-show="parentCtrl.alert"></div>
<div ng-controller="ChildController as childCtrl">
</div>
</body>
在 js 文件中,我在控制器 ParentController
中定义了变量 alert
:
app.controller('ParentController', [function() {
var self = this;
self.alert = null;
}]);
app.controller('ChildController', [function() {
// 那么这里应该如何访问到 ParentController 中的 alert 呢?
}]);
现在我想做的,是当 ChildController
中某些操作出现错误的时候,给 ParentController
中的 alert
赋值,这样那个错误 alert 框就可以显示,不知道应该如何写 ChildController
的代码呢?
现在有一个折中的办法是,将 ParentController
中的 alert
元素绑定到 $scope
中,即如下:
<body ng-controller="ParentController as parentCtrl">
<!-- 这里有一个 alert ,用于显示错误 -->
<div ng-show="alert"></div>
<div ng-controller="ChildController as childCtrl">
</div>
</body>
相应的 js 文件如下:
app.controller('ParentController', ['$scope', function($scope) {
$scope.alert = null;
}]);
app.controller('ChildController', ['$scope', function($scope) {
$scope.alert = {
type: 'alert',
info: 'Error...'
};
}]);
但是现在的 AngularJS 不都推崇的是直接将要显示的数据绑定到控制器上,而不是向控制器中注入 $scope
变量。因此想请教一下大家正确的方法,或者是在单页面应用中,如何正确地显示错误框。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.