我有两个控制器(和两个视图)和一个工厂。我从第一个控制器在工厂中设置了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'
})
}]);
如果您需要更多详细信息,请与我们联系
谢谢..
答案 0 :(得分:0)
如果您在第二个视图中刷新浏览器,则您的网址指向/ mypage / some_id。浏览器再次重新加载,ngRoute会立即将您引导至第二个视图。这意味着您的Controller1未实例化,因此未设置Factory中的属性。