Backbone:获取视图的html代码?

时间:2014-04-02 17:03:46

标签: javascript jquery backbone.js

为了将社交图标(Twitter,Linkedin等)的HTML代码写入textarea以便用户可以在其他地方使用该代码,我想获取视图元素的HTML代码,但我是有一些问题。为了更好地说明这一点,以下是创建视图的代码:

define(function(require, exports, module) {
    var _ = require('underscore');
    var GridControlView = require('pb/views/grid-control');
    var SocialiconsControlDialog = require('pb/views/socialicons-control-dialog');
    var template = require('text!pb/templates/socialicons-grid-control.html');

    var SocialiconsGridControlView = GridControlView.extend({
         template: _.template(template)
        ,templateVars: {
            partials: {
                 facebook:   require('text!pb/templates/socialicons-grid-control-facebook.html')
                ,twitter:    require('text!pb/templates/socialicons-grid-control-twitter.html')
                ,googleplus: require('text!pb/templates/socialicons-grid-control-googleplus.html')
                ,pinterest:  require('text!pb/templates/socialicons-grid-control-pinterest.html')
                ,linkedin:   require('text!pb/templates/socialicons-grid-control-linkedin.html')
            }
        }
        ,control_dialog: SocialiconsControlDialog
    });

    return SocialiconsGridControlView;
});

例如,Linkedin模板如下所示:

<script src="//platform.linkedin.com/in.js?<%- t.cache_buster %>" type="text/javascript">lang: en_US</script>
<script type="IN/Share" data-counter="<%- t.linkedin_option_countmode %>"></script>

我想要检索的是解析后的模板代码为文本,例如:

<script type="text/javascript" src="//platform.linkedin.com/in.js?0.4670609195438331">
<script data-counter="top" type="IN/Share+init">

但是使用如下的东西:

control_view.render().$el.innerHTML;control_view.render().$el.html().text()control_view.render().$el.html().replace(/<\/?[a-z][a-z0-9]*[^<>]*>/ig, "");不会返回文字;它返回完整的HTML,并生成一个Linkedin图标(当我只想将文本写入textarea时)。

有什么想法吗?

更新**

我注意到代码control_view.render().$el在应用程序的其他位置正常工作,并返回HTML代码,但由于某种原因,在这个视图中,我正在尝试它不会。代码似乎打破了:

$control = control_view.render().el;

在控制台中我收到一个错误:

  

TypeError:t未定义 - underscore-min.js(第3行)

1 个答案:

答案 0 :(得分:0)

使用.outerHTML的{​​{1}}属性。

$el

jsFiddle