2016-07-27 77 views
0

範圍值現在,我通過我的參數通過國家,如:角JS - 更新上點擊

 .state('app.listing', { 
     url: '/ad/listing/:adId/{type}', 
     params: { 
      adId: { 
      value: "adId", 
      squash: false 
      }, type: { 
      value: null, 
      squash: true 
      } 
     }, 

這工作,我可以從$ stateParams得到「類型」和更新我的GET請求。

有沒有辦法做到這一點的事件,並沒有使用$ stateParams傳遞「類型」參數?

我基本上有一個按鈕,可以過濾結果並從按鈕傳遞類型參數。如果我只需將一個單擊事件附加到它然後更新我的獲取請求,會更容易。

就亂搞我試圖做類似

$scope.filter = function(type) { 
    if(type) { 
     return type; 
    } 
    return '' ; 
    } 

    $scope.type = $scope.filter(); 

服務就像

$http.get(API_ENDPOINT.url + '/listing/' + adId, { 
     params: { 
      page: page, 
      type: type // essentially $scope.type 
     }, 
     }). 

,然後在我的按鈕,我有

<button ng-click="filter('2')"></button> 

^這將通過2型,但不會在點擊時重新啓動http get調用。我是否需要廣播更改是否有一個簡單的方法來執行此操作?

這是否有意義?上面的代碼只是模擬來給出一個想法,但如果有的話可以接受建議。

+0

您是否在過濾器函數中調用'$ http.get(...)'? – k4l4m

+0

你試過$ state.go('app.listing',{type:$ scope.type})嗎? –

+0

@ k4l4m那麼,它綁定到一個更復雜的設置,http綁定到一個init函數,然後進一步進入無限滾動和分頁過程。我嘗試從過濾器函數重新初始化init函數,但那不起作用。 – limit

回答

0

你可以用你的get調用的函數&稱它爲過濾功能後ng-click

$scope.functionName = function() { 
    return $http.get(API_ENDPOINT.url + '/listing/' + adId, { 
    params: { 
     page: page, 
     type: type // essentially $scope.type 
    } 
    }) 
} 

然後在HTML

<button ng-click="filter('2'); functionName()"></button> 
1

角從來沒有要求你做出broadcasts,以反映所做的更改到scope變量通過控制器

var typeWatcher = '1'; 
$scope.filter = function(type){ 

    if (type !== typeWatch) 
     { 

      $http.get(API_ENDPOINT.url + '/listing/' + adId, { 
       params: { 
        page: page, 
        type: type // essentially $scope.type 
       }, 
      }); 
      typeWatcher = type; 
     } 

}; 
+0

是的,但是如何在更改之後重新啓動$ http服務是我卡住的地方。我也嘗試使用$ scope。$ watch()進行更改事件,但這也不起作用。我目前正在加載的init正在利用包含所有http調用的infiniteScroll。我想我基本上只想根據$ scope變化進行http更新。 – limit

+0

@limit如果值已更改,請檢查該值,然後致電 –

+0

@limit檢查更新的答案 –

0

好了,請點擊$http.get方法,

$scope.filter = function(type) { 
    if(type) { 
    //call the method using service.methodName 
    return type; 
    } 
    return '' ; 
} 

和換行$ http.get方法將一個函數。

希望它可以幫助你。

乾杯