knockout.js KnockoutJS -我们可以为CSS更新调用Observable Function吗

nafvub8i  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个票务系统,这是用KnockOut使用模板编写的。模板结构如下所示。此模板在一个页面上为多个用户重复。在此父级中。AssignedTickets是分配给用户的票证ID列表。

<script type="text/html" id="TicketAssignmentTemplate">
<td>
   <label data-bind="css: {success: $root.getCheckStatus(TicketId, $root.AllAssignedTickets)}">
      <input type="checkbox" data-bind="checkedValue: TicketId, checked: $parent.AssignedTickets" />
    </label>
</td>
<td>
    <label data-bind="text: title"></label>
</td>
self.getCheckStatus = function (itkID, ListID ) {
    if (ListID.indexOf(itkID)>= 0)  
       return true;
    else 
       return false;
}
<style>.success{background-color: #DFF0D8;}</style>

因此,系统有多个TicketID,如果通过选中复选框将其分配给用户,则parent.AssignedTickets会得到更新,而我会更新root.AllAssignedTickets,两者都是可观察的数组。现在,我想更改复选框的标签颜色,该复选框通过getCheckStatus(TicketId,$root.AllAssignedTickets)得到更新。
当复选框被选中或取消选中时,该函数是否可以被观察到以真实的更新CSS?

5n0oy7gb

5n0oy7gb1#

它不起作用,因为你传递的是AllAssignedTickets作为一个参数。

self.getCheckStatus = function (itkID) {
    return self.AllAssignedTickets.indexOf(itkID) > -1;
}

<label data-bind="css: { success: $root.getCheckStatus(TicketId) }">

Knockout将在内部创建一个订阅,它将正常工作。

相关问题