这是控制器。
.controller('EventMapCtrl', function($scope, $stateParams, Events) {
var vm = this;
vm.EventId = Number($stateParams.id);
Events.getEvents.then(function(data) {
vm.event = _.find(data, {id: vm.EventId});
console.log(vm.event);
});
$scope.vm = vm;
});
这是Events
服务
.service('Events', function(mApi, mDomain) {
return {
getEvents: mApi.getData('/events/')
}
});
到目前为止,我能够进行http调用并获取所有事件。但是,我在控制器中特别想要实现的是来自即将到来的数据,我只想要一个id为vm.EventId
的事件。到目前为止,我在console.log(vm.event)
时收到了一个未定义的错误。我很感激任何帮助。我对角度的理解是最近的,我不确定我是否正确使用.find()
。
答案 0 :(得分:0)
不用担心在这里使用lodash - 我们可以使用AngularJS Filter。请注意以下简化示例。你可以从这里塑造你的工作副本......
// inject $filter
var items = [{'id': 1}, {'id': 2}, {'id': 3}];
var found = $filter('filter')(items, { id: 2 }, true); // { 'id': 2 }
JSFiddle Link - 演示
答案 1 :(得分:-1)
解决了它。 我在服务器端添加了一个不同的路由,这将允许我使用附加的ID进行http调用。此外,我还使用了不同的服务。 这是新服务。
.service('Event', function(mApi,mDomain){
var getEvent = function(id){
return mApi.getData('/event/'+id);
};
return {
getEvent: getEvent
};
})
这是控制器。我进一步实现了map的特定属性。因此,它看起来与我原来的帖子有很大不同。
.controller('EventMapCtrl', function($scope, $stateParams, Event) {
var vm = this;
Event.getEvent($stateParams.id).then(function (res) {
vm.event = res.data;
vm.map = {
center: {
latitude: vm.event.location.latitude,
longitude: vm.event.location.longitude
},
zoom: 17
};
vm.marker = {
id: 1,
latitude: vm.event.location.latitude,
longitude: vm.event.location.longitude,
title: vm.event.location.name
}
});
vm.locationClicked = function (marker) {
window.location = "geo:" + marker.latitude + "," + marker.longitude + ";u=35";
};
$scope.vm = vm;
})
以下是我想要完成的具体行。
Event.getEvent($stateParams.id).then(function (res) {
vm.event = res.data;