angularjs - 来自工厂的get在页面刷新时返回null

时间:2015-11-15 05:57:35

标签: angularjs angular-ui-router angularjs-controller angularjs-factory

我有两个控制器(和两个视图)和一个工厂。我从第一个控制器在工厂中设置了property。然后我重定向到第二页。当我试图从第二个控制器的工厂获得该属性时,它运作良好。但是当我刷新页面(视图2)时,get()返回null ..

这里发生了什么?

工厂

angular.module('app')
    .factory('Factory', function ($http, $location) {
        var factory = {},
            property = null;
       .....
       factory.set = function (data) {
            property = data;
        };

        factory.get = function () {
            return property;
        };
    return factory;
});

在我设置的第一个控制器中

Factory.set($scope.property);

并通过

重定向
$location.path("/mypage/" + response.id);

第二个控制器

angular.module('app')
    .controller('Controller2', function ($scope, $http, Factory) {

        $scope.property = Factory.get();
        alert($scope.property.key);
    });

一旦我转到第二页,会弹出alert框并显示key的值。但是当我刷新时,我在控制台上收到以下错误。

TypeError: Cannot read property 'key' of null

这是我的 router.js

angular.module('app', ['ngRoute', 'ui.bootstrap'])
    .config(['$routeProvider', function ($routeProvider) {
            $routeProvider.when('/mypage', {
            templateUrl: 'mypage/Input.html',
            controller: 'Controller1'
        });

        $routeProvider.when('/mypage/:id/', {
            templateUrl: 'mypage/Page.html',
            controller: 'Controller2'
        })
    }]);

如果您需要更多详细信息,请与我们联系

谢谢..

1 个答案:

答案 0 :(得分:0)

如果您在第二个视图中刷新浏览器,则您的网址指向/ mypage / some_id。浏览器再次重新加载,ngRoute会立即将您引导至第二个视图。这意味着您的Controller1未实例化,因此未设置Factory中的属性。