2016-07-27 61 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方法将一个函数。

希望它可以帮助你。

干杯