2013-08-20 31 views
1

所以我正在做我的路由器通過HTTP請求thrugh解決方案,我想知道如何從我的http請求中的工廠獲得值?我在我的工廠中有一個函數,我想調用它並從中獲取值並通過http請求發送該值。有沒有什麼辦法可以在解析函數中注入工廠?AngularJs:如何發送一個變量來解析函數:做一個http請求?

$routeProvider 
    .when('/', { 
     redirectTo: '/home' 
    }) 
    .when('/home', { 
     templateUrl: 'views/main_portal.html', 
     controller: MyController15, 
     resolve: MyController15.loadAll 
     }) 
    .when('/home/convo', { 
     templateUrl: 'views/convo.html', 
    }) 
    .otherwise({ 
     redirectTo: '/home' 
    }); 


MyController15.loadAll = { 
    //I WANT TO PASS A VARIABLE HERE TO USE IN THE PARAMS OBJECT. 
    allQ: function($http) { 
     return $http({ 
     url: some_url, 
     method: post, 
     params: {action: 'someAction', valueToPass: ???????} 
     }); 
    } 
}; 

var MyController15 = ['allQ', 
    function(allQ){ 
//some data manipulation of allQ.data 

}]; 

回答

0

您應該將您的http請求重構爲服務。可能是您從中獲得價值的相同服務。只要確保在服務方法中返回http承諾。

+0

的問題是,我從我的http請求需要的數據,如果我把它的服務,我得到一個未定義的錯誤,因爲HTTP請求不認爲加載之前加載。我現在設置它的方式已經解決了在我的數據加載之前加載我的視圖然後數據只是刷新自身的問題。再次,問題是如何以同樣的方式使用它,但是通過在解決方案中使用工廠/服務方法。 –

+0

如果你有一個plunkr或什麼的,這將是一個更容易幫助你,因爲我所描述的應該工作。 – DerekR

2

也許你應該只是解決了一些參數,然後控制器可以使用$ HTTP或服務,讓您的數據......像這樣:

$routeProvider.when('/home/:valueToPass', { 
        templateUrl: 'views/main_portal.html', 
        controller: 'MyController15', 
        resolve: {valueToPass: function($route){ 
         return $route.current.params.valueToPass; 
        }} 
       });  

//... 

app.controller('MyController15', function($scope, $http, valueToPass) { 

//... 

或者你可以用這個的jsfiddle來說明問題了嗎?

http://jsfiddle.net/malix/BEscs/

相關問題