【发布时间】:2015-09-15 17:29:43
【问题描述】:
我在不同页面控制器之间获取更新值时遇到问题,情况如下。
page1.html
<body ng-app="app">
<div ng-controller="ctrl1">{{ version }}</div>
</body>
page2.html
<body ng-app="app">
<div ng-controller="ctrl2">{{ version }}</div>
</body>
app.js
var app = angular.module("app", []);
app.run(function($rootScope) {
$rootScope.Data = [];
$rootScope.Data.Version = '1.0.0.1';
});
app.controller('ctrl1', function($scope, $rootScope){
$scope.version = $rootScope.Data.Version;
$rootScope.Data.Version = '1.0.0.2';
});
app.controller('ctrl2', function($scope, $rootScope){
$scope.version = $rootScope.Data.Version;
});
结果
version: 1.0.0.1 // page1.html
version: 1.0.0.1 // page2.html
预期结果
version: 1.0.0.1 // page1.html
version: 1.0.0.2 // page2.html
这种情况如何实现?
我尝试将本教程中的 $broadcast 用于单独的页面控制器:fiddle
【问题讨论】:
-
您的 jsfiddle 似乎与您提供的相关代码不匹配。我的意思是你的小提琴中的
rootScope在哪里? -
我用 Google 搜索并获得了使用广播的 jsfiddle 教程。对于单页多个控制器正在工作。但我需要多个页面控制器。
-
您如何呈现单独的页面(视图)? ng-route 还是 ui-router ?
-
我没有使用任何东西。基本上,我在页面之间重定向。
-
page1.html和page2.html是否表明您实际上在使用两个单独的 htmls 文件?如果是这样,那么您尝试做的事情是不可能的(除非您将使用一些外部存储/传输机制 [url,localStorage,cookie,...])。
标签: javascript angularjs angular-broadcast angularjs-rootscope