1

誰かがこれを経験したか、正しい方向に私を向けることができます:

John Papa の hottowel SPA テンプレートのコードを使用しています。以下を使用して変更をキャンセルしようとした後、モーダル ダイアログが閉じません。

  var canDeactivate = function () {
    if (isDeleting()) { return false; }

    if (hasChanges()) {
        var title = 'Do you want to leave "' +
            projectDetails()[0].title() + '" ?';
        var msg = 'Navigate away and cancel your changes?';

        return app.showMessage(title, msg, ['Yes', 'No'])
        .then(confirm);

        function confirm(selectedOption)
        {
            if (selectedOption === 'Yes') {
                cancel();
            }

            return selectedOption;
        }

    }
    return true;
};

私は得る:

TypeError: activator.deactivateItem(...).then は関数ではありません [このエラーでブレーク]

Durandal の modalDialog.js の 72 行目への参照:

activator.deactivateItem(インスタンス, true).then(関数 (closeSuccess) {.....

4

2 に答える 2

1

HotTowel main.js のテンプレートから追加のコードがいくつかあることがわかりました。

// Q shim
    system.defer = function (action) {
    var deferred = Q.defer();
    action.call(deferred, deferred);
    var promise = deferred.promise;
    deferred.promise = function () {
        return promise;
    };

    return deferred;
    };

このシムがエラーの原因でした-理由はわかりませんが、これが誰かに役立つことを願っています...

于 2013-06-03T12:12:56.460 に答える