Javascript 单击时填充角度模式
这是一个看似简单的任务,我正在努力完成 我有一张来自ng repeat的事件表。我希望用户能够单击事件名称,并让它弹出一个包含事件详细信息的模式 我目前有一个链接到标题名的Javascript 单击时填充角度模式,javascript,angularjs,Javascript,Angularjs,这是一个看似简单的任务,我正在努力完成 我有一张来自ng repeat的事件表。我希望用户能够单击事件名称,并让它弹出一个包含事件详细信息的模式 我目前有一个链接到标题名的ng click=“eventDetails(objectId)”。然后在我的控制器中,这是我的代码 app.controller('viewEventRequestsController', function($scope, EventFactory){ // this gets a list of events, one
ng click=“eventDetails(objectId)”
。然后在我的控制器中,这是我的代码
app.controller('viewEventRequestsController', function($scope, EventFactory){
// this gets a list of events, one of the properties of the event is called objectId
EventFactory.query(function(response){
$scope.events = response.results;
});
//this is the function that runs when I click, the event name.
$scope.eventDetails = function(objectId){
$scope.modalOn = true;
$scope.modal = EventFactory.get({ objectId: objectId });
console.log($scope.modal)
}
});
这是我的标记的一部分
<tr ng-repeat="items in events | filter:filter | orderBy:sort:reverse">
<td>
<a ng-click="eventDetails(objectId)">{{items.Name}}</a>
</td>
{{items.Name}
My console.log($scope.modal);正在返回完整的对象数组,而不是我单击的单个对象
然而,当我使用$scope.events=EventFactory.get({objectId:$routeParams.objectId})时,在我的应用程序的另一部分代码>这很好用。我不能这样做的原因是因为我需要eventDetails以一种模式弹出,而不是重定向到它自己的页面。所以这次我无法使用$routeParams
关于如何实现这一点,你有什么想法吗?可能是你文章中的一个输入错误,但是。。。如果您的实际代码是这样的,您将在此处向eventDetails函数传递一个不存在的对象:
<a ng-click="eventDetails(objectId)">
正如我所说,不确定是否输入错误,但事实上,您获取的所有事件都好像没有通过任何筛选器一样,这就像在没有任何筛选器的情况下调用get()
---更新---
由于您在本地拥有事件,因此无需求助于其他服务器请求即可获取单个事件
在eventDetails()函数上尝试以下操作:
$scope.eventDetails = function(event){
$scope.modalOn = true;
var index = $scope.events.indexOf(event);
if(index > -1){
$scope.modal = $scope.events[index];
}
}
<tr ng-repeat="items in events | filter:filter | orderBy:sort:reverse">
<td>
<a ng-click="eventDetails(items)">{{items.Name}}</a>
</td>
在html上,只需将完整项作为参数传递给函数:
$scope.eventDetails = function(event){
$scope.modalOn = true;
var index = $scope.events.indexOf(event);
if(index > -1){
$scope.modal = $scope.events[index];
}
}
<tr ng-repeat="items in events | filter:filter | orderBy:sort:reverse">
<td>
<a ng-click="eventDetails(items)">{{items.Name}}</a>
</td>
{{items.Name}
是的,就是这样!真不敢相信我错过了。但是我想知道的一件事是,如果表中已经有了所需的数据,是否有一种方法可以重构此代码,使其不需要发出另一个GET
请求?是的,我已经更新了我的答案,允许您在不向服务器发出另一个请求的情况下检索事件