我正在尝试遵循 Ember.js 文档中的“Ember 应用程序架构”指南,以便制作一个带有 socket 和路由的 simpla 应用程序,但有些事情一直困扰着我。
为什么 ember 路由器将 Controller 设置为模板的数据上下文,而不是 View 对象?这把一切都搞砸了。例如,如果由于 URL 更改而必须呈现以下模板并将其附加到 socket :
<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>
模板的数据上下文是 Controller ,而不是 View 对象。这仍然有点好,但是,现在 {{action}} 交互似乎都不起作用,因为,猜猜看,上下文不同了......
那我该怎么办?
最佳答案
自 ember-1.0.pre 版本起,操作上下文已更改为路由器。因此,默认情况下,您的 onClick 操作将由路由器处理。要将其更改为 View ,您必须显式设置操作的目标或设置 controller.target
属性。要将 View 设置为操作的目标:
<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>
关于javascript - Ember.js 和 connectOutlet 模板上下文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238046/