2012-12-27 129 views
2

我寫了這個非常簡單的Ember代碼,但由於某種原因,當我按下按鈕時事件似乎沒有觸發。有小費嗎?Ember.js事件不起作用

<!DOCTYPE html> 

<html> 

    <head> 
    <title>Test</title> 
    </head> 

    <body> 

    <script type="text/x-handlebars"> 
     {{#view CounterView}} 
     Counter: {{Counter.value}} 

     <button {{action "increment"}}>Add 1</button> 
     {{/view}} 
    </script> 

    <script src="jquery-1.7.2.min.js"></script> 
    <script src="handlebars-1.0.rc.1.min.js"></script> 
    <script src="ember-1.0.pre.min.js"></script> 

    <script> 
     Counter = Ember.Object.create({ 
     value: 1, 
     }) 

     CounterView = Ember.View.extend({ 
     increment: function(event) { 
      Counter.incrementProperty('value'); 
     } 
     }) 
    </script> 
    </body> 
</html> 

回答

3

爲了使事件系統正常工作,Ember.js需要創建和初始化應用程序(該框架爲您完成)。

您的應用爲例,默認Ember.js開始的jsfiddle,這裏是結果:

HTML模板:

<script type="text/x-handlebars" data-template-name="application"> 
    {{#view MyApp.CounterView}} 
    Counter: {{MyApp.counter.value}} 
    <button {{action "increment"}}>Add 1</button> 
    {{/view}} 
</script> 

的Javascript:

//Thanks to @Trek Instructions: 
//The following line creates one listener for each user event (e.g. 'click') and 
//controls event delegation. 
MyApp = Ember.Application.create(); 

MyApp.counter = Ember.Object.create({ 
    value: 1 
}); 

MyApp.CounterView = Ember.View.extend({ 
    increment: function(event) { 
    MyApp.counter.incrementProperty('value'); 
    } 
}); 

工作小提琴:http://jsfiddle.net/6p6XJ/260/

1

我會建議你閱讀http://trek.github.com/,特別是「上的最小可行灰燼應用程序」的一部分。

從1.0.pre開始,Ember應用程序需要一個路由器才能存在。然而,網上的大多數文檔/例子都指向0.9.5時代

trek guide + ember docs是從框架開始的好方法。