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());

しかし、誰も追加しなかったので、exportidインはありません。テンプレート関数はいつでもthis.model.toJSON()見つけようとしますが、そこにないため、.exportid<%= exportid %>ReferenceError

モデルの属性に入る必要があるexportidか、テンプレート データに入る必要があります。あなたの場合、どのアプローチが適切かわかりません。


_.templateはテンプレートを JavaScript 関数に変換し、その関数はwithその引数オブ​​ジェクトのキーを変数のように見せるために使用することに注意してください。だからあなたが言うとき:

var data = this.model.toJSON();
t(data);

を含むテンプレートの場合

<%= exportid %>

JavaScript エンジンは を探し、data.exportidで見つからない場合はdata、 というスコープ内の変数を探しますexportid。その 2 番目のルックアップは、または問題ReferenceErrorではなく、問題を引き起こします。nullundefined

于 2013-11-06T17:25:23.697 に答える