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>