2012-09-02 93 views
1

我試圖遵循Ember.js文檔中的「Ember Application Architecture」指南,以便製作一個帶有插座和路由的simpla應用程序,但是它總是讓我嗡嗡作響。Ember.js和connectOutlet模板上下文問題

爲什麼ember路由器將控制器設置爲模板的數據上下文,而不是視圖對象?這擰了一切。例如,如果下面的模板已被繪製並連接到出口作爲一個URL變化的結果:

<script data-template-name="feed_template" type="text/x-handlebars"> 
    <h1>The feeds<h1> 
    {{this}} 
    {{#each items}} 
     <a href="#" {{action "onClick"}}>test</a> 
    {{/each}} 
    </script> 

模板的數據上下文是控制器,而不是一個視圖對象。但是,現在還沒有任何{{action}}交互似乎有效,因爲猜測是什麼,背景有所不同......

那麼我該怎麼做?

回答

1

從ember-1.0.pre版本開始,操作的上下文已更改爲路由器。因此默認情況下,您的onClick操作將由路由器處理。要將其更改爲視圖,必須在操作上明確設置目標,或設置controller.target屬性。將視圖設置爲動作的目標:

<script data-template-name="feed_template" type="text/x-handlebars"> 
    <h1>The feeds<h1> 
    {{this}} 
    {{#each items}} 
     <a href="#" {{action onClick target="view"}}>test</a> 
    {{/each}} 
</script>