2012-03-14 71 views
2

特點: 添加新「標籤」可能的行動,比如在默認的警報事件之後。Emberjs

理念:

  • 創建TabsController
  • 創建initilizerView並用一個列表參數處理TabsController.Content
  • 當視圖「didInsertElement」,它的操作警報事件添加到默認內容 但如果我添加一個新的我不知道如何再次行動這function ("didInsertElement")

請幫助

的jsfiddle http://jsfiddle.net/chalien/Hxste/2/

通過pangratz 感謝您的幫助和重構:)

http://jsfiddle.net/chalien/Hxste/

+0

我補充說: 「jQuery的」 標籤到這個問題,因爲它是JQuery的有關。 – 2012-03-14 08:50:47

+0

@MikeAski如果你給編輯的建議,這將是很好的保持他們的實質和改善其他事情,如格式化拼寫等**也**在帖子:) – gideon 2012-03-14 09:43:20

+0

thnks @MikeAski我是一個stackoverflow新手 – 2012-03-14 12:08:17

回答

1

可以使用action把手幫手,見http://jsfiddle.net/jmDXP/

把手:

<script type="text/x-handlebars" id="mainview" > 
    {{#each list}} 
    <div {{action "clicked"}} >{{title}}/{{desc}}</div> 
    {{/each}} 
</script> 

<script type="text/x-handlebars" > 
    <div id="container"></div> 
    {{#view App.TabView}} 
     {{view Ember.TextField valueBinding="title"}} 
     {{view Ember.TextField valueBinding="desc"}} 
     <button {{action "addTab" }} >Add</button> 
    {{/view}} 
</script> 
​ 

的JavaScript:

var get = Ember.get; 

App = Ember.Application.create({}); 

App.Tab = Ember.Object.extend({ 
    title: null, 
    desc: null 
}); 

App.TabsController = Ember.ArrayController.create({ 
    content: [], 
    resourceType: App.Tab, 
    addTab: function(title, desc) { 
     this.pushObject(App.Tab.create({ 
      title: title, 
      desc: desc 
     })); 
    }, 
    init: function() { 
     this._super(); 
     var i = 0; 
     for (i = 0; i <= 4; i++) { 
      this.addTab("hola" + i, "test " + i); 
     } 
    } 
}); 

App.TabView = Ember.View.extend({ 
    addTab: function() { 
     var title = get(this, 'title'); 
     var desc = get(this, 'desc'); 
     App.TabsController.addTab(title, desc); 
    } 
}); 

App.initializeView = Ember.View.create({ 
    templateName: 'mainview', 
    listBinding: 'App.TabsController', 
    clicked: function(view, event, context) { 
     console.log('clicked @', get(context, 'title')); 
    } 
}); 

App.initializeView.appendTo('#container');​ 

注:在即將到來的版本的action回調改變的參數,見emberjs action event.target is undefined

+0

感謝您的重構和您的解決方案。這對我真的很有用,謝謝!!!!! – 2012-03-14 11:49:28

+0

很高興我能幫到你。 – pangratz 2012-03-14 11:52:36

0

解決只需更換:

$(".test").click(function(){ 

由:

$(".test").on('click', function(){ 

這將註冊處理程序,所有在場&未來匹配的元素...

更多信息@http://api.jquery.com/on/

+0

現場已棄用 – albertjan 2012-06-26 09:47:20

+0

謝謝。更新回答... – 2012-06-26 10:09:00