我在使用下划线js和骨干j开始时遇到了一些问题。我能够只显示带有主干的简单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();
当我尝试在浏览器中加载页面时,我收到错误:
未捕获的TypeError:对象函数
(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&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)}
没有方法'replace'showncore-min.js:1
知道造成这种情况的原因是什么?
答案 0 :(得分:1)
jQuery.html()
是一种方法,所以不是这样:
template: _.template($('#edit-user-template').html)
你需要
template: _.template($('#edit-user-template').html())