2012-09-07 37 views
0

我已經通過下面的教程/指南發表在這裏:http://www.adobe.com/devnet/html5/articles/flame-on-a-beginners-guide-to-emberjs.htmlEmber.js 0.9.7.1 - > 0.9.8.0,突破變化?

而一直在讓我開始Ember.js是一個很大的幫助,但是,我發現,而在他的例子代碼與Ember合作.js版本0.9.6,它們不適用於1.0版本。使用較新版本時,我應該爲App.labelController中的每個項目生成一個列表項目的句柄代碼不會執行任何操作。這是一個有意的改變嗎?如果是這樣,現在我該如何去實現相同的效果?

編輯:其實我已經收窄斷裂變化版本和

之間0.9.7.1 0.9.8

我有(供參考)下面的代碼:

/************************** 
    * Application 
    **************************/ 

    // Create the Ember.js application framework 
    App = Em.Application.create(); 

    /************************** 
    * Models 
    **************************/ 

    // The "model" for the label object 
    App.Label = Em.Object.extend({ 
    id: null, 
    name: null, 
    svg: null 
    }); 

    /************************** 
    * Views 
    **************************/ 

    /************************** 
    * Controllers 
    **************************/ 

    // The "controller" for the label objects 
    App.labelController = Em.ArrayController.create({ 
    content: [], 
    init: function() { 
     // Fake some data arriving from the server 
     for (var i = 0; i < 10; i++) 
     { 
     var label = App.Label.create({ 
      id: i, 
      name: 'Label 0' + i, 
      svg: null 
     }); 
     this.pushObject(label); 
     } 
    } 
    }); 

以下HTML:

<div class="row-fluid">   
    <div class="span3"> 
     <ul class="nav nav-list"> 
     <script type="text/x-handlebars"> 
      {{#each App.labelController}} 
      <li> 
       <a href="#">{{name}}</a> 
      </li> 
      {{/each}} 
     </script> 
     </ul> 
    </div> 
    <div class="span9" id="drawContainer"> 
    </div> 
    </div> 

回答

1

您忘記了App.labelController#init方法的電話this._super()

這是你的JSFiddle:it does not work

和JSFiddle撥打電話_superit works

+0

對不起,但這是我聽過的'this._super()'調用的第一個;它有什麼作用?爲什麼需要?等等。 – Siyfion

+1

當你在對象上指定'init'方法時,它會覆蓋擴展類的'init'方法。所以調用'this._super()'確保父方法被調用(並防止意外行爲)。在這裏,它調用這個方法:http://goo.gl/pXsFw – louiscoquio

+0

啊,因爲我重寫了基類功能..很有道理!你需要爲你在Ember中重寫的所有內容做到這一點嗎? – Siyfion