2

""プロジェクトにEmber.jsを使用していますが、すべてのコンテンツを削除するか、すべてのプロパティをに設定する必要がある場合nullがありEmber.Objectます。

つまり、テンプレート内には、オブジェクトのプロパティの一部にリンクするハンドルバータグがあります({{myProperty}})。したがって、オブジェクトが空になるか、すべてのプロパティが""またはに設定されnullている場合、プロパティがnewに更新されても、このバインディングは引き続き存在します。値。

これを達成する方法はありますか?すべてのプロパティをすばやくループする方法はありますか?

4

2 に答える 2

4

eachAttribute(の方法であるこの考え方を書き始めましたが、代わりEmber.ObjectにオンになっていDS.Modelます。だから...)

オブジェクトがたまたまEmberDataDS.Modelインスタンスである場合、eachAttributeコールバック関数を受け取るメソッドがあります。したがって、提案していることを実行する1つの方法は次のようになります。

modelobj.eachAttribute(function(propName){
    modelobj.set(propName, null);
});

頭に浮かぶ他の唯一のアイデアは、オブジェクトの新しい「空白」インスタンスをインスタンス化し、それを古いものの代わりに割り当てることです...これを行うと、ほとんどの場合、ハンドルバーのバインディングが適切に更新されると思います。

于 2013-01-08T08:29:05.900 に答える
1

アプリケーションが{{#if}}テンプレート内のステートメントを使用して、プロパティを条件付きで表示/非表示にすることは機能しますか?

このような:

{{#if view.showStuff }}
    <p>{{view.myProperty1}}</p>
    <p>{{view.myProperty2}}</p>
    <p>{{view.myProperty3}}</p>
{{else}}
    <p>Not showing content</p>
{{/if}}

trueの場合showStuff、プロパティがレンダリングされます。それ以外の場合は、他のhtmlが表示されます。

http://jsfiddle.net/cteegarden/rHafx/1/

于 2013-01-08T13:47:35.430 に答える