我对Ember和网络开发都很陌生。假设我正在建立一个显示新闻文章的网站。我想在每篇文章中与维基百科链接进行一些互动,这样当你点击它们时,会弹出一个带有摘要的小方框(比如Instapaper应用程序)。我也喜欢盒子里的一些互动,扩展和折叠摘要等等。这样做最像Ember的方式是什么?
我认为使用jQuery将链接的点击处理程序添加到DOM中会很简单,但我真的很喜欢这个框是Ember视图。我以为我可能已经能够动态创建一个视图并将其附加到DOM元素,但似乎它isn't allowed,你只能附加到ContainerViews。
我该如何处理?
基本上,我将此作为每篇文章的模板,因此每个段落右侧都有段落和容器:
{{#each paragraph}}
<div class='paragraph-container'>
<p {{bind-attr id=paragraph_id}}>{{html_text}}</p>
<div class='paragraph-reference-container' {{bind-attr id=paragraph_reference_id}}></div>
</div>
{{/each}}
和相关的观点。 paragraph_reference_id
和paragraph_id
是计算属性,因此我可以在此处正确设置ID。我还有一个用于框的ReferenceView,这是无趣的,因为它只是占位符内容和代码。我正在绞尽脑汁想要解决这个问题,并最终尝试这样的事情来附加视图as was in the documentation:
App.ArticleView = Ember.View.extend({
templateName: 'article',
classNames: ['articles'],
didInsertElement: function () {
var container = this.container;
Ember.run.scheduleOnce('afterRender', this, function () {
var em = this;
em.$('.paragraph-container').each(function () {
var referenceContainerID = $('.paragraph-reference-container', this).first().prop('id');
em.$('a.wikipedia-link', this).click(function () {
var referenceView = container.lookup('view:reference');
referenceView.appendTo('#' + referenceContainerID);
});
});
});
}
});
但是我得到了“未捕获的错误:断言失败:您无法附加到现有的Ember.View。请考虑使用Ember.ContainerView。”错误。显然,如上所述,不再支持此功能。我真的不知道“Ember”的做法是什么,仍然使用视图(我真的很想做)而不是简单的HTML和jQuery。