0

我刚刚开始使用角度,我觉得一些细节正在阻止我让它正常工作!
我设置了一个这样的简单服务:

mySystem.factory('userAcsService', [function() {
    var user;

    return {
        getuser: function () {
            return user;
        },
        setuser: function (value) {
            user = value;   // working fine

            console.log('name: ' + user.name);
        }
    };
}]);

第一个控制器 (on '/User/Search') 正确存储该数据:

mySystem.controller('SearchController', ['$scope', '$route', '$routeParams', '$location', '$http', 'userAcsService', 
    function ($scope, $route, $routeParams, $location, $http, userAcsService) {
        //...
        $scope.details = function (user) {
            userAcsService.setuser(user);   // setting works fine
            window.location.href = '/User/Details';
        };
        //...
    }
]);

但是,当我尝试使用不同的控制器(重定向到之后'/User/Details')检索该用户时,它总是未定义:

mySystem.controller('EditController', ['$scope', '$route', '$routeParams', '$location', '$http', 'userAcsService',
    function ($scope, $route, $routeParams, $location, $http, userAcsService) {
        //...
        $scope.user = userAcsService.getuser(); // always undefined
        alert($scope.user.name);
        //...
    }
]);  

这需要什么才能工作?

编辑:我的 setter 方法userAcsService只被调用一次。

4

1 回答 1

1

window.location.href = "/User/Details"会加载整页,不是吗?这意味着您的所有 javascript 都将被重新加载,而用户将是undefined.

为此,您需要在没有完整页面加载的情况下转换到“/User/Details”,可能是通过使用 angulars 路由器或 ui-router https://github.com/angular-ui/ui-构建单页应用程序路由器

于 2013-10-29T17:04:49.137 回答