次のようなテーブルを作成しています。
<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>
knowckout.mapping 機能を使用して、コントローラーからデータを取得し、json にエンコードしています。私のjavascriptは以下です。
<script type="text/javascript">
$(function () {
var viewModelJSON = ko.mapping.fromJSON('@Html.Raw(jsonData)');
viewModelJSON.rowClass = ko.computed(function () {
return 'success';
});
ko.applyBindings(viewModelJSON);
});
</script>
css rowClass のデータバインドを追加するまで、すべてがうまく機能していました。私は単に成功クラスを返そうとしていますが、javascript コンソールは「バインディングを解析できません」と「rowClass が定義されていません」と報告します。また、rowClass関数を次のように宣言しようとしました:
viewModelJSON.rowClass = ko.computed(function () {
return 'success';
}, viewModelJSON);
しかし、まだ運がありません。私が間違っていることについて何か考えはありますか?
ワーキングソリューション
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>