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

时间:2015-01-30 07:27:29

标签: foreach viewmodel durandal

我有一个项目标题,我想要做的是当我点击标题时,显示所有相关活动,我有一个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>

这是我单击Projects title时调用的函数。

项目名称:<a data-bind="click: $root.fetchProjectActivities"><span data-bind="text: name()">

1 个答案:

答案 0 :(得分:0)

我可以看到一些事情。

  1. html中存在一个流氓<h3>标记,会导致与knockoutjs的悲伤。需要关闭或删除。

  2. 视图模型中的for循环确实应该是for (var x in data) {...},否则你最终会将x声明为全局范围内的变量。

  3. 现在要循环完成项目的活动,你实际上正在做的是一次一个地遍历current_activities数组。您需要跟踪当前选定的活动以及每次点击和所有活动列表的前进方式。

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

相关问题