0

所以我正在为 disqus 评论小部件构建一个视图。因为(通常)您会将 disqus 放在静态页面上(不像使用 Ember 呈现的页面那样动态),所以我必须将一些额外的参数传递给 Disqus API 以刷新页面。为此,我需要将标识符传递给 API。所以现在,我有一个像 /posts/:id 这样的路由结构。所以我想将该 ID 传递给 Disqus 视图,但我不确定如何——或者我是否正确理解了 Ember 架构。如果有人能指出我正确的方向,那就太棒了。

这是我在我的帖子模板中调用 DisqusView 的方式(这使用玉作为我的服务器模板语言)。

div(class="post limit-width")
    h3 {{headline}}
    p {{body}}
    h6
        em Posted by {{creator}} on {{created}}
    {{ view App.DisqusView identifier=id }}

我的 DisqusView 看起来像这样。

App.DisqusView = Em.View.extend({
    tagName: 'div',
    //controller: App.MapController,
    didInsertElement: function(){
        this.get('element').id = 'disqus_thread';
        console.log(this.get('identifier'));

        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
        var disqus_shortname = 'sitename'; // required: replace example with your forum shortname
        var identifier = new Date().getTime();
        this.set('identifier', identifier);

        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();

    }
});

所以这行得通;它实际上呈现了 Disqus 控件,但是当我在控制台上记录标识符时,我看到的只是“id”,而不是帖子模板中可用的实际 id。所以我只需要一种方法来访问那个“标识符”值。

4

1 回答 1

2

(1) 您可以在 {{view}} 助手中使用 id="disqus_thread" 来设置 ID。不要直接修改视图的元素。

(2) 使用 identifierBinding="id" 以便视图助手知道遵循指定的路径,否则它将被视为一个值。

于 2013-03-04T19:20:21.287 回答