AngularJS 访问父作用域
AngularJS access parent scope
我是 angularjs 的新手,我正在尝试做一些我不知道是否是好的做法。
嗯,我有一个主页,我想在其中显示所有其他控制器和视图的消息。
在这个 "main" 视图中,我有以下内容
<div class="row" data-ng-repeat="msg in messages">
<div class="col-lg-12">{{mgs.message}}
<a data-ng-click="close(msg)">×</a>
</div>
</div>
当我在 MainController 中设置消息时,消息会显示,但当我导航到另一个控制器时,它不会显示。
Google 告诉我这是因为我在使用不同的范围。
我想知道:
- 如何将消息添加到 "parent" 范围?或
- 如何在我的 Functionality2Controller 或
中调用 MainController 的方法
- 在主页中显示消息的其他更好方法是什么?
不同的控制器使用不同的范围,这是正确的,你应该尝试改变它。您可以做的第一件事是使用 $rootScope,所有其他作用域都是从中派生的。但是这种误用,我认为更好的解决方案是创建一个共享的消息服务:
.factory('messageService', [
function() {
var messages = [];
return {
getMessages: function() {
return messages;
},
addMessage: function(message) {
messages.push(message)
}
}
}
])
并将其注入您的控制器:
.controller('ctrl', ['$scope', 'messageService',
function($scope, messageService) {
$scope.messages = messageService.getMessages();
}
])
我是 angularjs 的新手,我正在尝试做一些我不知道是否是好的做法。
嗯,我有一个主页,我想在其中显示所有其他控制器和视图的消息。
在这个 "main" 视图中,我有以下内容
<div class="row" data-ng-repeat="msg in messages">
<div class="col-lg-12">{{mgs.message}}
<a data-ng-click="close(msg)">×</a>
</div>
</div>
当我在 MainController 中设置消息时,消息会显示,但当我导航到另一个控制器时,它不会显示。
Google 告诉我这是因为我在使用不同的范围。
我想知道:
- 如何将消息添加到 "parent" 范围?或
- 如何在我的 Functionality2Controller 或 中调用 MainController 的方法
- 在主页中显示消息的其他更好方法是什么?
不同的控制器使用不同的范围,这是正确的,你应该尝试改变它。您可以做的第一件事是使用 $rootScope,所有其他作用域都是从中派生的。但是这种误用,我认为更好的解决方案是创建一个共享的消息服务:
.factory('messageService', [
function() {
var messages = [];
return {
getMessages: function() {
return messages;
},
addMessage: function(message) {
messages.push(message)
}
}
}
])
并将其注入您的控制器:
.controller('ctrl', ['$scope', 'messageService',
function($scope, messageService) {
$scope.messages = messageService.getMessages();
}
])