2013-10-29 47 views
0

我剛剛開始使用angular,並且我覺得有一些細節阻止了我使它正常工作。
我成立了一個簡單的服務是這樣的:存儲在服務中的數據無法稍後檢索

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

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

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

第一控制器(上'/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); 
     //... 
    } 
]); 

什麼是需要這工作嗎?

編輯:我的userAcsService中的setter方法只被調用一次。

+0

你可以顯示你在哪裏調用'$ scope.details(someRealUser)'。當你詢問'userAcsService.getuser();' –

+0

它們在不同的頁面上時,'userAcsService.getUser()'在我重定向到''/ User/Details''時調用,它肯定會在調用二傳手(也通過調試確認)。我遇到的問題是我假設'userAcsService'是一個單身人士,看來我正在得到一個新的實例,但我不知道如何。 –

+0

你解釋的什麼都不假設AngularJS服務可能無法成爲單身人士。 –

回答

1

window.location.href = "/User/Details"會使整頁加載,不是嗎?這意味着所有的JavaScript都將被重新加載,用戶將會是undefined

爲了這個工作,你需要轉換到「/用戶/詳細信息」沒有一個完整的頁面加載,可能通過使用angulars路由器或ui路由器https://github.com/angular-ui/ui-router建立一個單一的頁面應用程序。

+0

看起來像這樣!謝謝! 這是一個有很多API投入的asp.net MVC應用程序,我想避免向服務器發出另一個API調用或請求,但我想這將是方式。 –

相關問題