我刚从this jsfiddle更新为EmberJS版本。
controllers / views:
App = Em.Application.create();
// Instantiated and wired up for you in App.initialize()
App.ApplicationController = Em.Controller.extend();
App.ApplicationView = Em.View.extend({
templateName: 'application'
});
App.NavbarController = Em.Controller.extend();
App.NavbarView = Em.View.extend({
templateName: 'navbar'
});
// Your stuff
App.HomeController = Em.Controller.extend({});
App.HomeView = Em.View.extend({
templateName: 'home'
});
App.ProfileController = Em.Controller.extend({});
App.ProfileView = Em.View.extend({
templateName: 'profile'
});
// Nested views in the profile
App.PostsController = Em.Controller.extend({});
App.PostsView = Em.View.extend({
templateName: 'posts'
});
App.PhotosController = Em.Controller.extend({});
App.PhotosView = Em.View.extend({
templateName: 'photos'
});
我一直在使用新的路由器,但是得到了一些奇怪的行为并且希望更新可能会解决它,不幸的是我现在得到以下警告和错误:
WARNING: Computed properties will soon be cacheable by default. To enable this in your app, set ENV.CP_DEFAULT_CACHEABLE = true. vendor.js:54720
Uncaught TypeError: Object function () { return initMixin(this, arguments); } has no method 'finishPartial' vendor.js:42905
任何人都有任何线索可能会发生什么?
答案 0 :(得分:2)
以你的jsfiddle为起点,我唯一的错误就是使用Em.State而不是Em.Route来定义路由器。
使用最新版本的ember,您必须使用Em.Route。
答案 1 :(得分:0)
错误表示当您应该对函数的结果进行操作时,您的代码正在尝试调用函数上的方法..例如myFunction.finishPartial();
而不是myFunction().finishParital();
Em.Mixin的快速谷歌让我建议这个疯狂的猜测:
Em.Mixin.create().finishPartial(this)