【问题标题】:Error when implementing template in underscore js and backbone je在下划线 js 和骨干 je 中实现模板时出错
【发布时间】:2013-02-23 15:13:45
【问题描述】:

我在开始同时使用下划线 js 和骨干 js 时遇到了一些问题。我只能显示带有主干的纯 html,但我无法显示要显示的模板。

模板:

<script type="text/template" id="edit-user-template">
        <form class="edit-user-form">
            <legend>Create User</legend>
            <label>First Name</label>
            <input type="text" name="firstname" />
            <label>Last Name</label>
            <input type="text" name="lastname" />
            <label>Age</label>
            <input type="text" name="age" />
            <hr />
            <button type="submit" class="btn">Create a User</button>
        </form>
</script>

查看:

var EditUser = Backbone.View.extend({
                el: '.page',
                template: _.template($('#edit-user-template').html),                
                render: function() {    
                this.$el.html(this.template({}));
                return this;
                }
            });

路线:

var Router = Backbone.Router.extend({
                routes:{
                    '':'home',
                    'new':'editUser'
                }
            });

            var userList = new UserList();
            var editUser = new EditUser();

            var router = new Router();
            router.on('route:home', function(){
                userList.render();
            });
            router.on('route:editUser', function(){
                editUser.render();
            });
            Backbone.history.start();

当我尝试在浏览器中加载页面时出现错误:

Uncaught TypeError: Object function (e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&amp;&amp;mt.test(e)||!b.support.leadingWhitespace&amp;&amp;yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"&lt;$1&gt;&lt;/$2&gt;");try{for(;i&gt;r;r++)n=this[r]||{},1===n.nodeType&amp;&amp;(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&amp;&amp;this.empty().append(e)},null,e,arguments.length)} 没有方法'replace' underscore-min.js:1

知道是什么原因造成的吗?

【问题讨论】:

    标签: javascript jquery backbone.js underscore.js


    【解决方案1】:

    jQuery.html() 是一个方法,所以不要这样:

    template: _.template($('#edit-user-template').html)
    

    你需要

    template: _.template($('#edit-user-template').html())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多