我是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中设置消息时,会显示消息,但是当我导航到另一个控制器时,它不是。
谷歌告诉我,这是因为我正在使用不同的范围。我想知道:
答案 0 :(得分:1)
不同的控制器使用不同的范围,这是正确的,你应该尝试改变它。您可以做的第一件事是使用$rootScope,其中所有其他范围都是派生自的。但是这种滥用,最好的解决方案是创建一个共享的messageService:
.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();
}
])