(KnockoutJS)在foreach之外引用数据

时间:2017-05-31 19:55:05

标签: knockout.js

我尝试使用foreach绑定每行$parent数据之外的数据,但会为以下代码抛出错误Unable to parse bindings

HTML:

<table>
    <thead>
        <tr>
            <th class="col_name">Name</th>
            <th class="col_dob">DOB</th>
            <th class="col_address">Address</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: rows">
        <tr data-bind="attr: { id: resource.id}, style: { background-color: $parent.isSel}, event:{click: $parent.selectRow} ">
            <td class="col_name" data-bind="text: resource.name"></td>
            <td class="col_dob" data-bind="text: resource.birthDate"></td>
            <td class="col_address" data-bind="text: resource.address"></td>
        </tr>
    </tbody>
</table>

当我删除style: { background-color: $parent.isSel}, event:{click: $parent.selectRow}时,一切正常。

到目前为止,上面两个人的KnockoutJS部分看起来像:

this.isSel = ko.observable("#fff");

this.selectRow = function() {
    var self = this;
    self.isSel("#ccc");
    console.log("Row selected");
}

有关于此的任何提示吗?

1 个答案:

答案 0 :(得分:3)

您的$parent用法没有问题,但使用了属性名称:background-color

在JS对象属性名称中无效。所以你需要在引号中包含background-color

<tr data-bind="attr: { id: resource.id}, 
               style: { 'background-color': $parent.isSel}, 
               event:{click: $parent.selectRow} ">

另见documentation