2015-09-23 67 views
2

我期待着開發一個AngularJS應用程序,我wondrering如果我可以使用單個控制器每次發送多個$ http.get請求,以不同的URL,這取決於在模板上調用。

例子:

App.js

.state('app.grocery', { 
    url: '/grocery', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/grocery.html', 
     controller: 'MasterCtrl' 
     } 
    } 
    }) 

.state('app.beverages', { 
    url: '/beverages', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/beverages.html', 
     controller: 'MasterCtrl' 
     } 
    } 
    }) 

在我Controller.js,我想先捕捉templateURL被調用,並基於該設置$ http.get URL.Suppose如果templateURL是templates/grocery.html,$ http.get URL是「xyz.com/grocery.json」,如果templateURL是templates/beverages.html,那麼$ http.get URL將是「xyz.com/beverages以.json」

回答

0

你必須在控制器檢查哪些頁面名稱,比如

.controller('MasterCtrl', function($scope, $stateParams,$state) 
{ 
    if($state.current.name==='grocery') 
    { 
     //call grocery $http.get() for grocery 
    } 
    else 
    { 
     //call beverages $http.get() for beverages 
    } 
}) 
0

您可以設置您在您的國家本身jsonName,並使用獲得,在使用$state.current控制器,將有jsonName財產,這將有你想要的信息。

代碼

.state('app.grocery', { 
    url: '/grocery', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/grocery.html', 
     controller: 'MasterCtrl' 
     } 
    }, 
    jsonName: 'grocery' 
}) 
.state('app.beverages', { 
    url: '/beverages', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/beverages.html', 
     controller: 'MasterCtrl' 
     } 
    }, 
    jsonName: 'beverages' 
}) 

控制器

app.controller('MasterCtrl', function($state, $scope, $http){ 

    //$state.current.jsonName will provide current json name 
    $http.get('xyz.com/'+ $state.current.jsonName +'.json') 
    .succcess(function(){ 
     //code when ajax success 
    }); 

}) 
0

當然可以 - 通過@Paresh以上回答是正確的。

然而,在我看來,你不應該這樣做。你的方法是這樣的,也許是因爲你不喜歡有很多文件或控制器。但無論什麼原因,擁有一個單獨的控制器將幫助您擁有一小組清晰的代碼,每個代碼負責一種類型的操作。如果你曾經想要實現單元測試,或者有很多不同的變體,比如你要求的變體,甚至是複雜的邏輯:按照你將要採用如此多的'IF'邏輯塊的方式實現它,比如這個到處都是。

如果你決定要決定'雜貨店'應該成爲'grocery_main',它會是很多'找到&替換',如果你錯過了一個單一的,你將有錯誤在你的代碼很容易。

這些都是學習的好編碼風格的基本面。如果您有興趣學習,我建議您繼續並聽取我的建議。

希望這會有所幫助

相關問題