Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击时填充角度模式_Javascript_Angularjs - Fatal编程技术网

Javascript 单击时填充角度模式

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 repeat的事件表。我希望用户能够单击事件名称,并让它弹出一个包含事件详细信息的模式

我目前有一个链接到标题名的
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
请求?是的,我已经更新了我的答案,允许您在不向服务器发出另一个请求的情况下检索事件