基于Ember.js CMS中内容的动态视图

时间:2014-04-22 12:05:37

标签: javascript ember.js

我对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_idparagraph_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。

0 个答案:

没有答案