0

私はknockoutjsを学んでいて、私のページにたくさんのマークアップが含まれていることに気づきました。

  • 不要-KOが機能するために必要
  • 過剰-data-bind=が機能するにはデータが必要です
  • コードクラッター-たくさんのマークアップ..

たぶん私はビューを適切に使用するのではなく、「インライン」で物事を行っていますこのコード:

<tr data-bind="css: {'checked':Active,'unchecked':!Active,}">
            <td data-bind="text: Name, class: Active"></td>
</tr>

生成:

<tr data-bind="css: {'checked':Active,'unchecked':!Active,}" class="checked">
  <td data-bind="text: Name, class: Active">Aaron46</td>
</tr>
<tr data-bind="css: {'checked':Active,'unchecked':!Active,}" class="checked">
  <td data-bind="text: Name, class: Active">Abigail</td>
</tr>
<tr data-bind="css: {'checked':Active,'unchecked':!Active,}" class="unchecked">
  <td data-bind="text: Name, class: Active">Adrienne</td>
</tr>
<tr data-bind="css: {'checked':Active,'unchecked':!Active,}" class="checked">
  <td data-bind="text: Name, class: Active">Aimee</td>
</tr>

これは「クラッターコード」のように見えますか?または私はそれについて心配するべきではありません...:)

私はこれまでKnockOutJSが大好きです..

4

2 に答える 2

2

何年にもわたって Html を可能な限りスパースにしてきた結果、多くのものをデータ バインドに入れるのは間違っていると感じたことを認めなければなりません。

しかし、それを数週間使用した後、その力で私は問題を乗り越えました. それは少なくともすべて意味があります。

そうは言っても、実際に一部のデータにバインドしていない場合、Knockout を使用して tds に CSS を設定することはありません。だから私はこれに行きます:

<tr data-bind="css: {'checked':Active,'unchecked':!Active,}">
            <td class="Active" data-bind="text: Name"></td>
</tr>
于 2013-01-22T16:02:45.627 に答える
1

マークアップでのバインディングの必要性を最小化または排除するためのライブラリがいくつかあります。

この原因に対する私の貢献は、構成ライブラリよりも規約です https://github.com/AndersMalmgren/Knockout.BindingConventions

明示的なバインディングではなく規則を使用します。このようなライブラリを使用する場合、バインディングを明示的に宣言する必要がほとんどないことに驚かれることでしょう。CSS の例を標準のバインディングでバインドする必要がある場合、または独自の規則を作成する場合。

例として、バニラ KO の場合:

<button data-bind="click: save, enable: canSave">Save</button>

私のライブラリ:

<button data-name="save">Save</button>

http://jsfiddle.net/3Ajnj/

于 2013-01-22T16:10:46.377 に答える