我正在尝试使用内联模板获取视图以在条件内显示车把。在我的应用程序代码中,如果我导航到另一条路线然后再返回,它会显示出来。在小提琴中,我得到关于视图的错误。
<script type="text/x-handlebars" data-template-name="application">
<h1>If you click that button, I might say 'Hello!'</h1>
<button {{action 'click_me'}}>Click me</button>
{{#if controller.new_visible}}
{{#view App.MyView}}
Hello! {{/view}}
{{/if}}
</script>
var App = Ember.Application.create();
App.MyView = Ember.View.extend({});
App.ApplicationController = Ember.Controller.extend({
new_visible: false,
actions: {
click_me: function() {
alert('You clicked me!');
this.set('new_visible',true);
}
}
});
App.ApplicationView = Ember.View.extend({
templateName: 'application'
});
App.Router = Ember.Router.extend({
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/'
})
})
});
我做错了什么?
答案 0 :(得分:0)
App
必须是全局的 - 如果您查看javascript日志,则可以看到句柄视图帮助程序找不到名为App.MyView
的视图。那是因为App
是在本地声明的,所以模板无法到达它。将App
定义更改为:
window.App = Ember.Application.create();
此外,您不需要扩展路由器。你可以使用地图。 e.g。
App.Router.map(function(){
this.route('index', {path: '/'});
});
这是一个有效的JSFiddle:http://jsfiddle.net/PkT8x/420/