0

好吧,我创建了一个事件,以便选中多个复选框,如果它们是手动的,它应该将这些复选框分配给受让人,但如果不是,它们应该是。这是视图功能,

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>

它给了我一个错误,说没有定义 exportid,有什么想法吗?

4

1 回答 1

0

这个:

self.model.fetch({
    data: {
        exportid: self.model.id
    }
});

作为 AJAX 请求的一部分发送{exportid: self.model.id}到服务器,它不会exportid作为属性添加到模型中。然后稍后你会做这样的事情:

var t = _.template(...);
var h = t(this.model.toJSON());

但是不会有exportidinthis.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

于 2013-11-06T17:25:23.697 回答