2013-05-08 2 views
0


Кто-нибудь знает, как связать маршрут, скажем, PostRoute (имена изменены из исходного приложения), который имеет эквивалентный контроллер PostController с не- -стандартный взгляд сказать BlogPostView, в RC 3? Я использую Ember Animated outlet и просматриваю, но ничего не делал в отношении маршрутов/анимаций для RC 1, но RC 3 дает эту ошибку). В RC 1 просто объявлялось что-то вроде этого, как изменить определение маршрута, чтобы заставить его работать с RC 3? Я попробовал перестроить ember-animated-outlet.js с RC 3, но тот же результат (надеясь, что он, возможно, был построен с предварительной версией RC 3)?Невозможно связать нестандартный вид с Ember Routing (RC 3) и с Ember AnimatedView

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, но при отладке такой вызов возвращается как «undefined».

Я обнаружил, что вид для почтового маршрута определяется как виртуальный. Как сказать Ember, что для этого маршрута используйте это представление, которое не является виртуальным, чтобы оно перестало жаловаться. Моя BlogPostView выглядит следующим образом:

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

Спасибо,
Пэдди

+0

как делает ваш 'BlogPostView 'выглядят? – intuitivepixel

+0

Можете ли вы объяснить, что означает «похоже»? Я расширил Ember.View.extend (имена классов, показанных здесь, были изменены с оригинала) – Paddy

+0

«выглядят». Я имею в виду, что распространять эту практику часто, чтобы показать больше примеров кода вокруг проблемы, чтобы помочь сообществу проще:) – intuitivepixel

ответ

0

Я предполагаю, что ошибка происходит из точной этой линии template: $.template('blog_post'). Как statet в docs:

Все виды Дитя в App.AnimatedContainerView должны быть четко определены, так как анимация работает только с невиртуальных видом. Это означает, что если у вас есть маршрут называется invoices.show и вы ожидаете, чтобы оживить в него, необходимо определить вид для нее: App.InvoicesShowView = Ember.View.extend()

Что делать docs явно не указано, что вам нужно также определить шаблон для вашего представления, поэтому, поскольку вы не можете использовать предварительно скомпилированный шаблон для анимированных торговых точек, вы должны определить их на ранней стадии. Это означает, что если у вас есть BlogPostView, вам нужен шаблон blogPost, который уже задан для резервного копирования BlogPostView.

Ваше мнение будет тогда привести к чему-то вроде:

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

и шаблона для резервного копирования вид, как:

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

Позвольте мне знать, если это помогает

+0

Я попробую это и дам вам знать. Моя первоначальная попытка не удалась, может быть, что-то не так с моим кодом, не знаю, как публиковать весь JSBin, так как это сложный код. Есть ли другой указатель, чтобы узнать причину? В любом случае, если мы не сможем использовать предварительно скомпилированный шаблон, не приведет ли это к результату? Уже я вижу, что моя страница занимает немного времени, чтобы загрузить смену использования templateName, а не предварительно скомпилированный шаблон. – Paddy