26 行のテーブルを含むページがあります。バインド先のデータに応じて、各行には<input>
または要素が含まれます。<select>
5 ~ 30 個のオプションを含む要素にバインドする場合、ページのレンダリングに約 5 秒かかります。バインディングを削除すると、ページは 1 秒以内にレンダリングされます。
Ember.Select ビューにバインドするときの既知のパフォーマンスの問題はありますか? または、私はそれを間違ってやっている可能性がありますか?Firefox 22 を使用しています。IE9 は約 2 倍遅いです。この間、CPU は固定されません。私はember 1.0rc6を使用しています。
テンプレート スニペット:
{{#if pa.isPickList}}
{{view Ember.Select viewName="select" contentBinding="pa.options" selectionBinding="pa.selected"}}
{{else}}
{{input valueBinding="pa.selected"}}
{{/if}}
モデルをフェッチする方法の非同期性が非効率を引き起こしているのではないかと心配しています。おそらく、バインディング イベントと非同期イベントの相互作用が非効率的です。
バックエンドは Salesforce.com です。プロミスについて私が知っていることはほとんどないので、プロミスでサーバーデータを取得する必要があるかどうか疑問に思っています。これを行う方法がわかりません。
現在、ルートでデータを取得している方法は次のとおりです。
App.IndexRoute = Ember.Route.extend({
model: function(params){
var otherController = this.controllerFor('selectedProducts');
var ar = Ember.A(); //create an array
var arg = '0067000000PNWrV';
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.ProductPricingLookupController.loadOpportunityProducts}',
arg,
function myHandler(result, event) {
console.info('got results!!! ' + result.length);
for(var i = 0; i < result.length; i++)
{
var p = result[i];
var sfProd = App.ProductResult.create({content: p});
ar.pushObject(sfProd);
}
},
{escape: false} //some of the names have ampersands!!
);
return ar;
}
}
初心者がjavascriptとEmberの方法を学ぶのを手伝ってくれてありがとう.
Update Here は、この問題の実際の例です。それぞれ 60 のオプションを持つ 5 つのピックリストがあります。これは、私のマシンでレンダリングするのに 2 ~ 3 秒かかります。これらはかなり大きな数であることは理解していますが、不合理ではないことを願っています. 選択リストの要素またはオプションの数を増やすと、簡単に 5 秒に達することができます。
また、server-model-fetching を promise に移動しても、パフォーマンスには影響しませんでした。
アンドリュー