所以我在Ionic框架中设置了以下工厂/控制器,它工作正常。但是,我想提供三个按钮,一旦点击,更改位置 - 例如按钮1 =伦敦,按钮2是纽约,按钮3将其更改为MADRID。我现在可以通过编写三个工厂并更改API URL来进行此操作 - 对其进行硬编码,但它看起来很混乱。我想知道是否有一种方法可以将“点击”链接到一个参数或什么东西?我已经搜索过,我已经看过搜索,插值和$资源教程,但似乎没有什么是正确的。
.factory('eventService', function ($http) {
var events = [];
return {
getEvents: function () {
return $http.get('http://api.API.com/json/q=music&location=LONDON&app_key=XXX').then(function (response) {
events = response.data.events;
return response.data.events;
});
},
getEvent: function (index) {
return events.event[index];
}
}
})
//控制器
.controller("GigsCtrl", function ($scope, eventService) {
eventService.getEvents().then(function (events) {
$scope.events = events;
});
})
//每个项目都是可点击的,依此类推......
.controller("GigDetailCtrl", function ($scope, $stateParams, eventService) {
$scope.event = eventService.getEvent($stateParams.index);
console.log("Second Controller says: Hello World - I work");
})
这可能是一个非常简单的解决方案,我只是看不到树林!温柔,我自12月以来一直这样做,所以对它来说很新!
这变得非常接近,但仍未真正解决...... Get URL param in Express API from Angular UI-Router
//按钮 - 每个都进入一个新的搜索页面,目前每个搜索页面都有一个工厂,但理想情况下我会点击按钮来改变一个“主”工厂......
<ion-content class="padding">
<div class="button-bar bar-dark">
<a href="#/london" class="button">London</a>
<a href="#/madrid" class="button">Madrid</a>
<a href="#/newyork" class="button">New York</a>
答案 0 :(得分:1)
可以传递修改请求网址所需的值,例如:
getEvents: function (location) {
var params ={
q:'music',
app_key: your_app_key,
location: location ? location.toUpperCase() :'LONDON';//default
};
return $http.get('http://api.API.com/json/', {params: params}).then(function (response) {
return response.data.events;
});
}
然后在您的州配置中使用location而不是index来获得更有意义的url显示