0

私はノックアウトjsを初めて使用するので、達成しようとしていることとベストプラクティスについて支援が必要です。

私はjsonを返すコントローラーアクションを呼び出しているmvc4アプリケーションに取り組んでおり、それをビューモデルにバインドしています。

 $.getJSON("/cart/summary", function (data) {
        myModel = ko.mapping.fromJS(items);
        ko.applyBindings(myModel , document.getElementById("my-container"));
    });

myModel ビュー モデルは、コントローラーから返された json オブジェクトを直接表現したものです。

オブジェクトには、オブジェクトであるプロパティ (Prop1) と、オブジェクトのリストを持つ別のプロパティ (Prop2) が含まれています。

Prop1 オブジェクトには、Globalize プラグインを使用して通貨としてフォーマットしたい 10 進数のプロパティが含まれています。ビューモデルでこれを行い、ビューにバインドする必要がありますか? もしそうなら、これを行うためにモデルを拡張するにはどうすればよいですか? またはビューで行われますか?

Prop2 に 0 個以上のアイテムがある場合、つまり div を表示したい。空ではありません。同様の質問が再びありますが、これを通知するプロパティを返す必要がありますか、それともマークアップで行う必要がありますか?

プロパティをバインドしてテキストを div に追加したいのですが、どうすればよいですか?

最後に、バインディングが完了した後、バインディングが完了したという事実をアニメーション化したいと思います。どのように行われたかを知りたいだけで、影響が何であるかは気にしませんか?

フィードバックをお寄せいただきありがとうございます。

4

1 に答える 1

1

それは、1 つの「質問」に対して多くの質問です。私はそれらすべてに対処したと思います。


globalize プラグインを使用する場合は、クライアント側で通貨の書式設定を行うのが最善です。一般的な経験則として、プレゼンテーション ロジックはとにかくプレゼンテーション層で実行する必要があります。ビジネス ロジックやその他のビューでさえ、通貨の書式設定を必要としない場合があります。


繰り返しますが、同じ経験則に従って、プレゼンテーション層は、モデル オブジェクトが持つアイテムの数を気にするものです。これは ko バインディングで簡単に実現できます。

http://knockoutjs.com/documentation/if-binding.html

<!-- ko if: listObjectName.length > 0-->
    // put your div and list bindings in here
<!-- /ko -->

テキストを div に追加するには、正確な目的に応じてスパンのテキストまたは html にバインドできます。

http://knockoutjs.com/documentation/html-binding.html


afterRenderロードが完了した後にアニメーションを配置するには、イベントを使用できます。

http://knockoutjs.com/documentation/template-binding.html#note_4_using_afterrender_afteradd_and_beforeremove

この記事を要約するには、テンプレートを設定する必要があります。

<div data-bind='template: { name: "personTemplate",
                       data: myData,
                       afterRender: myPostProcessingLogic }'> </div>

myPostProcessingLogic次に、ビューモデルで関数を作成できますmyData

これは、マウスのホバー時または設定された間隔でのグロー効果の追加に関するスタックオーバーフローの投稿です。インターバルに使用されるテクニックが最も重要です。設定された間隔で実行する代わりに、myPostProcessingLogicが呼び出されるたびに実行します。

テキストに光るエフェクトをアニメーション化するにはどうすればよいですか?

于 2013-02-19T15:30:36.637 に答える