2012-09-02 52 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>