この概念を理解しようとしています。あなたがソートの前と後にconsole.log this.get( "content")を書けば、すべてがうまくいくように見えますが、画面に表示するとファンキーになります。問題はハンドルバーであると私は思う。ソートすると、重複した4番目のレコードが追加され、先頭に貼り付けられます。あなたがここにアクションで問題を見ることができます:オブジェクトのEmberJSソート配列コントローラ
は、私が何か間違ったことをやっている
http://jsfiddle.net/skinneejoe/Qpkz5/78/(レコードを訴えるために、テキスト「年齢によってソート」数回をクリックして、問題が表示されます)があり、より良い方法、またはこれはバグですか?それはバグだと良い回避策はありますか?
index.htmlを
<script type="text/x-handlebars">
{{#view App.SortView}}Sort by Age{{/view}}<br/>
{{#each App.userController}}
{{#view App.RecordView contentBinding="this"}}
{{content.name}} - {{content.age}}
{{/view}}
{{/each}}
</script>
app.js
window.App = Ember.Application.create();
App.userController = Ember.ArrayController.create({
content: [
Ember.Object.create({ name:"Jeff", age:24 }),
Ember.Object.create({ name:"Mark", age:32 }),
Ember.Object.create({ name:"Jim", age:12 })
],
sort:"desc",
sortContent:function() {
if (this.get("sort") == "desc") {
this.set("sort", "asc");
} else {
this.set("sort","desc")
}
if (this.get("sort") == "asc") {
var sortedContent = this.get("content").sort(function(a,b){
return a.get("age") - b.get("age");
})
} else {
var sortedContent = this.get("content").sort(function(a,b){
return b.get("age") - a.get("age");
})
}
this.set("content", []);
this.set("content",sortedContent)
}
})
App.RecordView = Ember.View.extend({})
App.SortView = Ember.View.extend({
click: function() {
App.userController.sortContent("poId")
}
})
だから何が問題なのですか?ソート・ビューをクリックしても間違ったことはありません。 –
"ソート"すると、重複する4番目のレコードが追加され、先頭に貼り付けられます。申し訳ありませんが、私はイニシャルにそう言っていたはずです。私は最初の投稿に追加しました。 – skinneejoe
あなたはどのブラウザとバージョンを使用していますか?私はOSXでChrome 17.0.963.56を使用しています。この4番目のレコードは表示されません。 –