Сейчас я передаю свой параметр через состояние, например:
.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 при нажатии. Нужно ли мне транслировать изменение, есть ли простой способ сделать это?
Это даже имеет смысл? Вышеприведенный код просто макет, дающий представление, но открытый для предложений, если таковой имеется.
Угловые никогда не требует от вас сделать 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;
}
};
Вы можете обернуть свой вызов в функцию и вызвать его после функции фильтра в 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>
Ну, Чтобы вызвать метод $http.get
при щелчке,
$scope.filter = function(type) {
if(type) {
//call the method using service.methodName
return type;
}
return '' ;
}
и оберните этот метод $ http.get одной функции.
Надеюсь, это поможет вам.
ура
$http.get(...)
в функции фильтра?