0

コンマ区切りの文字列で観測可能です。私がやりたいことは、オブザーバブルを分割してバインドし、テーブルで垂直に表示されるようにすることです。私の見解は以下のとおりです。

<table>
<tbody data-bind="foreach: dataOne">
    <tr>
        <td data-bind="text: name1"></td><td >&nbsp;&nbsp;&nbsp;</td>  
    </tr>
</tbody>
</table>

ビュー モデルは次のとおりです。

var data1 = [{
    name1: "one,two"
}];

var viewModel = {
    dataOne: ko.observableArray(data1)     
};

ko.applyBindings(viewModel);

ここでは簡単にするために、foreachバインドを使用してデモを行います。私のコードでは、withバインディングを使用しています。バインディングを使用する理由withは、ユーザーが選択した単一の行を表すためです。

では、このように、オブザーバブルを分割して結果のアイテムをテーブルに垂直に表示する方法は?

one
two

このようにコードを使用することは可能ですか?

<table>
<tbody data-bind="with: dataOne">
    <tr foreach: splittedArray> 
        <td data-bind="text: name1"></td><td >&nbsp;&nbsp;&nbsp;</td>
    </tr>
</tbody>
</table>

問題は、それを分割する方法が本当にわからないことです。さらに入力が必要な場合はお知らせください。

これが私のフィドルです。

4

1 に答える 1

0

分割を実現するために、計算されたオブザーバブルを使用できます。

self.name1split = ko.computed(function() {
    return self.name1.split(",");
});

そして、View を反復させます。

<td>
    <!-- ko foreach: name1split -->
    <span data-bind="text: $data"></span><br />
    <!-- /ko -->
</td>

デモについては、フィドルのこのフォークを参照してください。

キーワードの適切なスコープthisselfが必要であり、実際のアプリケーションなどの変数に保存する必要があることに注意してください。

于 2013-10-17T13:22:57.810 に答える