这是我的代码:
render: function () {
var data = this.serializeData(),
that = this;
require(['text!trigger-menu/confirmation/' + that.model.get('type') + '-template.html'],
function(templateHTML) {
var html = _.template(templateHTML, data);
that.$el.html(html);
});
}
我有3种不同的确认视图可以显示。 3个中的2个正在工作。那个不是这样的人:
<ul>
<% _.each(signupForms, function (signup) { %>
<li><%- signup.name %></li>
<% }); %>
<% _.each(authorizedApps, function (app) { %>
<li><%- app.name %></li>
<% }); %>
<% if ((!signupForms && !authorizedApps) || (!signupForms.length && !authorizedApps.length)) { %>
<li>All signups</li>
<% } %>
</ul>
错误为Uncaught NotFoundError: Failed to execute 'appendChild' on 'Node': The new child element is null.
其他人遇到此错误?
答案 0 :(得分:0)
您可以在初始化视图时执行此操作,而不是更改渲染函数中的模板:
define([
'jquery',
'underscore',
'backbone',
'marionette',
'text!templates/template1.html',
'text!templates/template2.html',
], function ($, _, Backbone, Marionette, template1, template2) {
var View = Backbone.Marionette.ItemView.extend({
initialize: function () {
if({YourConditionHere}){
this.template = Marionette.TemplateCache.get(template1);
}else{
this.template = Marionette.TemplateCache.get(template2);
});
// Our module now returns our view
return View ;
});