2012-02-20 9 views
0

この概念を理解しようとしています。あなたがソートの前と後に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") 
    } 
}) 
+0

だから何が問題なのですか?ソート・ビューをクリックしても間違ったことはありません。 –

+0

"ソート"すると、重複する4番目のレコードが追加され、先頭に貼り付けられます。申し訳ありませんが、私はイニシャルにそう言っていたはずです。私は最初の投稿に追加しました。 – skinneejoe

+0

あなたはどのブラウザとバージョンを使用していますか?私はOSXでChrome 17.0.963.56を使用しています。この4番目のレコードは表示されません。 –

答えて

0

私は、OS X上のSafari、クロムまたはFirefoxでこのバグが表示されません。ここで

は、完全なコードですIEの問題だと思います。

11日前に修正されたthis reported Ember bugとよく似ています。 ember-latestにアップグレードし、問題が修正されているかどうか確認してください。

+0

これで解決しました。私は別のブラウザで試してみたはずです。ご協力いただきありがとうございます! – skinneejoe