Angular JS - обновить значение области при щелчке

0

Сейчас я передаю свой параметр через состояние, например:

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

Это работает, поскольку я могу получить "тип" из $ stateParams и обновить запрос на получение.

Нет ли способа сделать это из события click и не использовать $ stateParams для передачи параметра "type"?

У меня в основном есть кнопка, которая фильтрует результаты и передает параметр типа из кнопки. Было бы намного проще, если бы я мог просто присоединить к нему событие клика, которое затем обновляет мой запрос на получение.

Я просто пытаюсь сделать что-то вроде

  $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 call при нажатии. Нужно ли мне транслировать изменение, есть ли простой способ сделать это?

Это даже имеет смысл? Вышеприведенный код просто макет, дающий представление, но открытый для предложений, если таковой имеется.

  • 0
    Вы вызываете $http.get(...) в функции фильтра?
  • 0
    Вы пробовали $ state.go ('app.listing', {type: $ scope.type})?
Показать ещё 1 комментарий
Теги:
ionic-framework

3 ответа

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 при загрузке использует infiniteScroll, который имеет все вызовы http. Я предполагаю, что в основном хотел просто обновить http на основе изменения $ scope.
  • 0
    @limit В ngclick проверьте значение, изменилось ли значение, затем обратитесь в службу поддержки.
Показать ещё 1 комментарий
0

Вы можете обернуть свой вызов в функцию и вызвать его после функции фильтра в 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>
0

Ну, Чтобы вызвать метод $http.get при щелчке,

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

и оберните этот метод $ http.get одной функции.

Надеюсь, это поможет вам.

ура

Ещё вопросы

Сообщество Overcoder
Наверх
Меню