刚开始使用AngularJS的第一个应用程序,我遇到服务变量问题。 HTML:
<html ng-controller="MainCtrl as main">
<head>
<title>{{ page.title() }}</title>
...
</head>
<body>
<header>{{page.title()}}</header>
<main ng-view></main>
<footer></footer>
</body>
</html>
*在每个视图中我使用ng-controller =“SomeCtrl”
MainCtrl:
APP.controller('MainCtrl', function($scope, page, uri){
$scope.page = page;
$scope.uri = uri;
});
ChatCtrl:
APP.controller('ChatCtrl', function($scope, page, uri){
uri.setActivePath('chat');
this.detailView = function(id){
page.setPageTitle('Chat Controller - Detail view!!');
$scope.chatID = id;
}
this.listView = function(){
page.setPageTitle('Chat Controller - List view!!');
}
if(uri.segment(1)) this.detailView(uri.segment(1));
else this.listView();
});
服务:
APP.factory('page', function(){
var title = 'Hybrid Mobile Application';
return{
title: function(){ return title; },
setPageTitle: function(pageTitle){ title = pageTitle; }
}
});
uri.segment(1) - 获取第二个网址段,例如:for / chat / 235,将显示235.
ChatCtrl用于“/ chat”和“/ chat /:chatid”链接,在每个视图中我都显示page.title()。因此,当我调用page.setPageTitle('something')时,它会更新header和main容器中的文本。
问题:当我从listView点击类似“/ chat / 29442”的链接时,detailView方法不会更新page.title(),并且$ scope.chatID在此视图中也是空的。如果我重新加载页面,它只会更新这些值。
我怎样才能让它发挥作用?
答案 0 :(得分:0)
我的&#39; uri&#39;服务从$ location返回网址路径,但在&#39; page&#39;服务,$ location没有核心更新,这就是我无法在page.title()和chatID中看到更改的原因。
我对这些服务一无所知,这就是为什么我自己创建一个获取url路径的原因。现在我使用if($routeParams.chatID) call detailView method
,一切正常!