Angular JS - 点击时更新范围值

时间:2016-07-27 09:49:52

标签: angularjs ionic-framework

现在我通过以下状态传递我的参数:

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

这样我就能得到"输入"来自$ stateParams并更新我的获取请求。

没有办法从click事件中执行此操作,并且不使用$ stateParams来传递"类型" PARAM?

我基本上有一个按钮来过滤结果并从按钮传递类型参数。如果我可以将click事件附加到它然后更新我的get请求,那将会容易得多。

只是乱搞我尝试做类似

的事情
  $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调用。我是否需要广播变更是否有一种简单的方法可以做到这一点?

这甚至有意义吗?上面的代码只是嘲笑提出一个想法,但如果有的话,可以接受建议。

3 个答案:

答案 0 :(得分:1)

Angular永远不会要求您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;
        }

};

答案 1 :(得分:0)

你可以将你的来电包裹在一个功能&amp;在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>

答案 2 :(得分:0)

好吧,点击时调用$http.get方法,

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

并将$ http.get方法包装到一个函数中。

希望它对你有所帮助。

干杯