Knockout.js 使用映射的viewmodel取消css绑定

Knockout.js 使用映射的viewmodel取消css绑定,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我创建了一个如下所示的表: <table> <thead> <tr> <th>Index</th> <th>Last Name</th> <th>First Name</th> </tr> </thead> <tbody data-bind="foreach: $data">

我创建了一个如下所示的表:

<table>
  <thead>
    <tr>
        <th>Index</th>
        <th>Last Name</th>
        <th>First Name</th>
    </tr>
  </thead>
  <tbody data-bind="foreach: $data">
    <tr data-bind="css: rowClass">
        <td data-bind="text: $index"></td>
        <td data-bind="text: LName"></td>
        <td data-bind="text: FName"></td>
    </tr>    
  </tbody>
</table>
但仍然没有运气。有没有想过我做错了什么

工作解决方案

更新我的JavaScript似乎解决了我的问题:

<script type="text/javascript">
    $(function () {

        var mapping = {
            create: function (options) {
                return new myImportItem(options.data);
            }
        }

        var myImportItem = function (data) {
            ko.mapping.fromJS(data, {}, this);

            this.rowClass = ko.computed(function () {
                return 'success';
            }, this);
        }

        var viewModelJSON = ko.mapping.fromJSON('@Html.Raw(jsonData)', mapping);            

        ko.applyBindings(viewModelJSON);
    });
</script>

$(函数(){
变量映射={
创建:函数(选项){
返回新的myImportItem(options.data);
}
}
var myImportItem=函数(数据){
fromJS(数据,{},this);
this.rowClass=ko.computed(函数(){
回归"成功",;
},这个);
}
var viewModelJSON=ko.mapping.fromJSON(“@Html.Raw(jsonData)”,mapping);
应用绑定(viewModelJSON);
});

在添加
css
绑定的地方,上下文将是数组中的一项。但是,您已将
行类
计算放在根级别

如果您想绑定它,您必须像
css:$parent.rowClass
css:$root.rowClass
(在本例中它们是相同的)


如果您想让数组中的每个项都计算出
行类
,那么您应该看看如何使用映射插件。

非常感谢。我似乎已经开始工作了。我正在用我的工作代码更新我的答案。
viewModelJSON.rowClass = ko.computed(function () {
            return 'success';
        }, viewModelJSON);
<script type="text/javascript">
    $(function () {

        var mapping = {
            create: function (options) {
                return new myImportItem(options.data);
            }
        }

        var myImportItem = function (data) {
            ko.mapping.fromJS(data, {}, this);

            this.rowClass = ko.computed(function () {
                return 'success';
            }, this);
        }

        var viewModelJSON = ko.mapping.fromJSON('@Html.Raw(jsonData)', mapping);            

        ko.applyBindings(viewModelJSON);
    });
</script>