你可以从我的问题中得知,我正在慢慢学习EmberJS。我已经阅读了关于路线的精彩指南,我觉得我已经准备好接受这个世界了,但后来......
在我的示例中,我认为{{somethingView}}将被渲染,而不是控制器属性{{somethingCtrl}}。这是正确的行为吗?如果是这样,您将如何从Ember.View呈现属性?
JS
window.App = Ember.Application.create({
ready: function() {
this.initialize();
}
});
window.App.Router = Ember.Router.extend({
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/',
connectOutlets: function(router) {
var controller = router.get('applicationController');
controller.connectOutlet('garments');
}
})
})
})
window.App.ApplicationView = Ember.View.extend({
templateName: 'application',
});
window.App.ApplicationController = Ember.Controller.extend();
window.App.GarmentsController = Ember.Controller.extend({
somethingCtrl: "Something in the controller"
});
window.App.GarmentsView = Ember.View.extend({
templateName: 'garments',
somethingView: "Something in the view"
});
DOM内容
<script type="text/x-handlebars" data-template-name="application">
<h1>Hi Ember</h1>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="garments">
<h1>Garments</h1>
{{somethingView}}<br>
{{somethingCtrl}}
</script>
答案 0 :(得分:4)
这种行为是正确的。这些是我对这些余烬核心概念的理解:
但是仍然可以访问模板中的视图实例。您只需在模板中使用名称为“view”的变量即可。我用一个工作示例更新了你的小提琴:http://jsfiddle.net/jPK8A/5/
<script type="text/x-handlebars" data-template-name="garments">
<h1>Garments</h1>
{{view.somethingView}}<br>
{{somethingCtrl}}
</script>
但要明确:最常见的情况应该是从控制器访问内容。您通常不应该访问视图的变量。您希望在应用程序中显示日期,此日期位于模型中,因此应通过控制器访问。最可能的情况是,您希望在视图中存储标签或类似的东西(必须计算的标签)。