我创建了一个事件,以便选中多个复选框,并且如果它们是手动的,它应该将这些复选框分配给受让人,但如果它们不是,则它们应该是。这是视图函数,
assignUserClicked : function() {
var self = this;
var modal = new AssignmentUserModalView({
collection: this.getSelected()
}).open();
this.model.save({
integrationlevel: 'manual'
}, {
type: 'POST',
wait: true
});
var self = this;
var refresh = function (model) {};
this.listenTo(modal, 'ok', function () {
self.model.fetch({
data: {
exportid: self.model.id
}
});
});
modal.open();
},
,tmpl在下面,
<div class="btn-toolbar pull-right">
<div class="btn-group" title="Bulk Actions">
<button class="btn dropdown-toggle btn-primary" data-toggle="dropdown">
<span class="glyphicon glyphicon-th-list"></span>
Bulk Actions
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<h3 class="pull-left no-margin">
<%= name %>
<small>-
<%= exportid %></small><% if (integrationlevel== 'manual') { %>
<small>-</small>
<small class="text-danger">NON CHANGEABLE</small><% } %>
<%= exportid %>
</h3>
<li>
<% if (integrationlevel == 'automatic'|| integrationlevel== 'Automatic'){ %>
<a href="javascript:void(0);" id="ud_changetomanual" tabindex="-1">
<span class="glyphicon glyphicon-ok"></span>
Set to manual
</a>
<% } else { %>
<a href="javascript:void(0);" id="ud_assignee" tabindex="-1">
<span class="glyphicon glyphicon-user"></span>
Change Assignment
</a>
<% } %>
</li>
</ul>
</div>
它给我一个错误,说导出没有定义,任何想法?
答案 0 :(得分:0)
此:
self.model.fetch({
data: {
exportid: self.model.id
}
});
作为AJAX请求的一部分将{exportid: self.model.id}
发送到服务器,它不会将exportid
作为属性添加到模型中。然后你会做这样的事情:
var t = _.template(...);
var h = t(this.model.toJSON());
但exportid
中没有this.model.toJSON()
,因为没有人添加它;然后,模板函数会在您exportid
时尝试查找<%= exportid %>
但是,由于它不存在,您会得到ReferenceError
。
您需要将exportid
放入模型的属性中,或者只放入模板数据中。我不知道在你的情况下哪种方法是合适的。
请记住_.template
将模板转换为JavaScript函数,该函数使用with
使其参数对象的键看起来像变量。所以当你说:
var data = this.model.toJSON();
t(data);
表示包含
的模板<%= exportid %>
JavaScript引擎会查找data.exportid
,然后,如果它在data
中找不到它,它会查找名为exportid
的范围内变量。第二次查找导致ReferenceError
而不是null
或undefined
问题。