现在我通过以下状态传递我的参数:
.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调用。我是否需要广播变更是否有一种简单的方法可以做到这一点?
这甚至有意义吗?上面的代码只是嘲笑提出一个想法,但如果有的话,可以接受建议。
答案 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方法包装到一个函数中。
希望它对你有所帮助。
干杯