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



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

这是我的观点模型...

 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>

这是我单击项目标题时被调用的函数。

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

我可以看到几件事。

  1. HTML 中有一个流氓 <h3> 标签,它会导致 KNOCKOUTJS 的悲伤。 需要关闭或删除。

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

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

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

相关内容

  • 没有找到相关文章

最新更新