AngularJS在diff控制器的方法上更新服务变量
AngularJS update service variable on diff controller's methods
刚刚用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"
主控制:
APP.controller('MainCtrl', function($scope, page, uri){
$scope.page = page;
$scope.uri = uri;
});
聊天控制:
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) - 获取第二个 url 段,例如:对于/chat/235,将显示 235。
ChatCtrl 用于"/chat"和"/chat/:chatid"链接,在每个视图中我都显示 page.title()。因此,当我调用 page.setPageTitle('something') 时,它会更新标头和主容器中的文本。
问题:当我从listView单击指向"/chat/29442"的链接时,detailView方法不会更新page.title(),并且$scope.chatID在此视图中为空。如果我重新加载页面,它只会更新这些值。
我怎样才能让它工作?
我的"uri"服务从$location返回网址路径,但与"页面"服务一样,$location没有直接更新,这就是为什么我看不到page.title()和chatID的变化。
解决方案:$routeParams
我不知道这项服务,这就是为什么我自己创建了一个来获取网址路径。现在我正在使用if($routeParams.chatID) call detailView method
一切正常!
相关文章:
- AngularJS 1.5.x服务未正确绑定,并且未在控制器中更新
- 如何根据服务更改更新指令
- 服务人员未更新
- 由控制器调用的服务更改时,Angular未更新视图
- 更新azure移动服务数据库中的现有项目
- AngularJS服务(更新/保存)
- AngularJs在调用服务方法后更新指令
- 当视图在AngularJS中返回时,我如何获得异步服务调用来更新视图
- 在一个控制器中更新服务变量,并在另一个控制器 - Angular JS中使用更新的值
- 从服务更新角度控制器
- 使用服务更新 AngularJS 中的控制器
- 我的服务没有更新-Angularjs
- 在 Angular JS 中使用 promise 更新服务
- AngularJS在diff控制器的方法上更新服务变量
- 从使用它的指令更新服务
- 使用angular2更新服务中组件的可变变化
- Angular:更新服务并在控制器之间共享数据
- Angular 2:更新服务变量和视图
- ng -单击“更新服务出厂值以反映在其他控制器上”
- 从父控制器更新服务值