【发布时间】:2026-01-16 08:10:01
【问题描述】:
我是 Angularjs 的新手,我正在尝试构建我的第一个应用程序。假设我必须加载两个不同视图的路由:
- 127.0.0.1:8080/站点
- 127.0.0.1:8080/site_details
也许有两条不同的路线不是正确的程序,而是另一个问题。
我有两个控制器: 控制器 1:
app.controller('controller_1', function($scope, $http, user) {
user.set('Test Example')
});
和控制器 2
app.controller('controller_2', function($scope, $http, user) {
var xxx = user.get()
});
我想做的是在这两个控制器之间共享数据。为此,我以这种方式做了一项服务:
app.factory('user', function($rootScope) {
var savedData = {}
function set(data) {
savedData = data;
}
function get() {
return savedData;
}
return {
set: set,
get: get
}
});
环顾四周,这样构建的服务似乎可以解决问题。但是,我使用控制器 2 中的函数 get() 获得的总是一个空返回。 通过设置断点,我可以看到 set() 和 get() 函数都进入了服务中各自的函数。
这是在属于不同路由的控制器之间共享数据的正确程序吗?
EDIT1 这两个视图以相同的方式构建,并在 ng-view 中加载
<html ng-app="app" ng-controller='controller_1'>
CONTROLLER 1
</html>
【问题讨论】:
-
您是否在做任何可能导致服务重新加载的事情? IE。刷新页面。可以肯定的是,最好的方法是添加一个从 controller_1 到 controller_2 的视图链接
-
其实这两个视图都很基础。请参考编辑问题。它们被加载到 ng-view 中。因此,我将检查服务是否以某种方式重新加载。
标签: angularjs angularjs-controller angular-factory angularjs-view