jquery - 从具有固定第一列的 knockout View 模型创建动态表

标签 jquery knockout.js

我想根据一个月中的天数创建动态表并对其应用 knockout 绑定(bind)。 到目前为止,我已经创建了基本表并生成了tds

这是我的 KO View 模型:

 var WorkerModel = function (_workerId, _workerFullName, _daysOfTask) {
     this.workerId = _workerId;
     this.workerFullName = _workerFullName;
     this.daysOfTask = _daysOfTask;
 };

 var AppViewModel = {

     daysInMonth: ko.observable(),
     workersArray: ko.observableArray(),

     getWorkers: function () {
       // get workers from server
     }
 }

我创建了 jsfiddle 示例: jsfiddle

问题是,我不知道如何确定 dayOfMonth 是否为 dayOfTask 并向其添加 html 。

foreach: daysInMonth - create td

if (daysOfTask[i] == dayOfMonth) put html: "W" in td

另外我如何使用ko.observable()进行迭代?在 fiddle 中,我将 daysInMonth 设置为 observableArray(),但不知道如何使用 knockout 创建 for 循环。像这样的事情:

daysInMonth = ko.observable(15);

< ko for (i=0; i < daysInMont; i++) >

... some code

< /ko >

基本上我想得到这个表格布局:

enter image description here

最佳答案

您走在正确的道路上。

您可以使用 if 绑定(bind)有条件地显示“W”。您只需要使用 indexOf method (或者如果您的浏览器不支持它,则使用 jQuery、underscore.js 等中存在的实现)检查 daysInMonth 集合中的当前项目是否在 中>daysOfTask 数组。

您可以使用 $data 属性从 daysInMonth 获取当前项目,并使用 $parent 获取实际的 daysOfTask 数组 contextual binding properties :

<!-- ko foreach: $root.daysInMonth-->
    <td>
        <!-- ko if: $parent.daysOfTask.indexOf($data) != -1 -->
            W
        <!-- /ko -->
    </td>
<!-- /ko -->

演示 JSFiddle.

关于jquery - 从具有固定第一列的 knockout View 模型创建动态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091493/

相关文章:

javascript - 在 JavaScript 和 Knockout.js 中,为什么我不能返回变量?为什么我必须像方法一样返回变量?

javascript - 复选框中的 Knockout 数据绑定(bind)不适用于 android (4.2)

php - 使用 Codeigniter 处理 ajax 响应

javascript - 从 React 组件函数中的另一个文档调用普通的 javascript 函数

javascript - 有没有一种简单的方法可以用 javascript/jquery 倒带 html 视频元素?

javascript - ko.dependentObservable 这个方法如何巧妙地理解依赖关系?

jquery 不返回 url 哈希

javascript - jQuery 同时淡入和淡出

javascript - 必须将视频从 JSON 对象加载到 div 中,这可以通过 knockout 来完成吗?

javascript - Durandal JS knockout 延迟更新