0


有谁知道如何在 RC 3 中链接一个路由说 PostRoute(名称从原始应用程序更改),它有一个等效的控制器 PostController 和一个非标准视图,比如 BlogPostView?我正在使用 Ember Animated 插座和视图,但就 RC 1 的路线/动画而言,没有做任何额外的事情,但 RC 3 给出了这个错误)。在 RC 1 中,只是声明这样的事情有效,如何修改路由定义以使其与 RC 3 一起工作?我尝试使用 RC 3 重新构建 ember-animated-outlet.js,但结果相同(希望它可能是使用 RC 3 之前的 ember 版本构建的)?

App.Router.map(function(){
...
this.route('post');
...
}

随着

<script type="text/x-handlebars" data-template-name="application">
    {{animatedOutlet name="main"}}
</script>

<script type="text/x-handlebars" data-template-name="post">
    {{view App.BlogPostView}}
</script>

我收到这个错误

Ember.AnimatedContainerView can only animate non-virtual views. You need to explicitly define your view class.

我尝试将 renderTemplate 中的视图调用为 this.render('blogPost') 以便它找到 BlogPostView,但在调试时这样的调用返回为“未定义”。

我发现发布路线的视图被标识为虚拟的。如何告诉 Ember 对于这条路线,使用这个视图,它是非虚拟的,以便它停止抱怨。我的 BlogPostView 看起来像这样:

App.BlogPostView = Ember.View.extend({
     template: $.template('blog_post'),
     didInsertElement: function() {
     ...
     }
     ...
});

谢谢,
稻田

4

1 回答 1

0

我猜错误来自确切的这一行template: $.template('blog_post')。如文档中所述

App.AnimatedContainerView 的所有子视图都需要显式定义,因为动画仅适用于非虚拟视图。这意味着,如果您有一个名为 invoices.show 的路由并且您希望对其进行动画处理,则需要为其定义视图: App.InvoicesShowView = Ember.View.extend()

文档没有明确说明的是,您还需要为视图定义模板,因此,由于您不能为动画出口使用预编译模板,因此您必须尽早定义它们。这意味着,如果您有一个已定义BlogPostViewblogPost模板来备份BlogPostView.

然后,您的视图将导致如下结果:

App.BlogPostView = Ember.View.extend({
  template: 'blog_post'
});

和一个模板来备份视图,如:

<script type="text/x-handlebars" data-template-name="blog_post">
  ...
</script>

让我知道它是否有帮助

于 2013-06-03T10:09:12.007 回答