使用来自durandal中视图模型的视图中的foreach循环访问单个值

使用来自durandal中视图模型的视图中的foreach循环访问单个值,foreach,viewmodel,durandal,Foreach,Viewmodel,Durandal,我有一个项目标题,我想做的是当我点击标题时,所有相关的活动都会显示出来,我有一个API,它带来了所有相关的活动,API在YII框架中开发,API在视图模型中调用,所有活动都可以通过foreach循环在视图中访问,我想做的是一次显示一个活动,当我点击项目标题时,所有活动都会显示,我想点击一次显示一个活动。如果有人能回答,请回答 这是我的viewModel function fetchProjectActivities() { var self = this; // this.

我有一个项目标题,我想做的是当我点击标题时,所有相关的活动都会显示出来,我有一个API,它带来了所有相关的活动,API在YII框架中开发,API在视图模型中调用,所有活动都可以通过foreach循环在视图中访问,我想做的是一次显示一个活动,当我点击项目标题时,所有活动都会显示,我想点击一次显示一个活动。如果有人能回答,请回答

这是我的viewModel

 function fetchProjectActivities() {
     var self = this;
     // this.current_activities.length=0;
     dataservice.projectactivities(self.id()).then(function (data) {
         //self.current_activities().clear();
         for (x in data) {
             self.current_activities.push(new Activity(data[x].activity.id, data[x].user_id, data[x].user.first_name, data[x].user.last_name, data[x].activity.message, new Date(data[x].create_date), data[x].time_spent, data[x].tags, null, data[x].activity.status,
             self.name()));
         }
         console.log("aaa" + self);
     });
 }
这是我的观点

<div class="grid-item project-item clearfix">
    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"><h3>
        <div data-bind="foreach:projects">
            <div data-bind="foreach: current_activities">
               <span data-bind="text: title()"></span>
            </div>
        </div>
    </div>
</div>

这是当我点击项目标题时调用的函数


项目名称:

我可以看到一些东西

  • html中有一个rogue
    标记,它会让knockoutjs感到悲伤。这将需要关闭或删除

  • 视图模型中的for循环实际上应该是
    for(数据中的var x){…}
    ,否则最终会在全局范围中将x声明为变量

  • 现在,为了循环项目的活动,您正在有效地通过当前的_活动数组进行分页,一次一个。您需要跟踪当前选定的活动,以及每次单击的前进方式和所有活动的列表


    因此,您需要一个寻呼机视图模型。上有一个非常基本的视图模型,您可以根据自己的需要使用和修改。

    纠正了这两个问题:(没有解决问题)您可以添加更多视图模型,因为您当前拥有的非常有限。在上面的html中,您引用了项目和当前活动。它们不会出现在视图模型中