Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用q.js链接主干模型?_Javascript_Backbone.js_Promise_Q - Fatal编程技术网

Javascript 如何使用q.js链接主干模型?

Javascript 如何使用q.js链接主干模型?,javascript,backbone.js,promise,q,Javascript,Backbone.js,Promise,Q,我有以下资料: var q = new app.models.OverwriteLineItemsProcess(); q.set('id', $("#process_id").val()); q.saveSource($("#source_quote").val()); q.lockSource(); saveSource正在使用ajax将数据发送到后端。lockSource也是 我希望按以下顺序执行:saveSource>>lockSource 如何编写q.js使其工作 我指的是q.js

我有以下资料:

var q = new app.models.OverwriteLineItemsProcess();
q.set('id', $("#process_id").val());
q.saveSource($("#source_quote").val());
q.lockSource();
saveSource正在使用ajax将数据发送到后端。lockSource也是

我希望按以下顺序执行:saveSource>>lockSource

如何编写q.js使其工作

我指的是q.js

更新:添加了saveSource和lockSource

您正在使用的jQuery.ajax函数已经为其结果返回了承诺。您只需从函数中返回:

saveSource: function (quotation_id) {;
    …
    var settings = {
        headers: headers,
        type: type,
        dataType: 'json', // jQuery will automatically parse it for you
        url: url,
        data: data
    };
    return $.ajax(settings).done(function() {
//  ^^^^^^
        $("#facebox-source-quote-status").html('<font color="green">SELECTED</font>');
        // notice I did remove the currentModel.lockSource(); call from the callback
    }, function() {
        $("#facebox-source-quote-status").html('<font color="red">UNABLE TO SELECT</font>');
    });
},
lockSource: function () {
    …
    var settings = // analoguous, no callbacks here
    return $.ajax(settings).fail(function(response) {
        $("#facebox-source-quote-status").html('<font color="red">UNABLE TO SELECT</font>');
    });
}
你甚至不需要Q。如果您想使用它,请将$.ajax调用包装在Q调用中,如。

saveSource和lockSource做什么;它们是在哪里定义的,它们返回什么,它们提供回调吗?q.js是什么意思?它似乎是一个主干模型,没有saveSource或lockSource,除非您添加了它们。理想情况下,saveSource会接受回调或返回一个承诺,然后您可以在完成后运行lockSource。我添加了saveSource和lockSource。如何编写saveSource来接受回调并返回承诺?
saveSource: function (quotation_id) {;
    …
    var settings = {
        headers: headers,
        type: type,
        dataType: 'json', // jQuery will automatically parse it for you
        url: url,
        data: data
    };
    return $.ajax(settings).done(function() {
//  ^^^^^^
        $("#facebox-source-quote-status").html('<font color="green">SELECTED</font>');
        // notice I did remove the currentModel.lockSource(); call from the callback
    }, function() {
        $("#facebox-source-quote-status").html('<font color="red">UNABLE TO SELECT</font>');
    });
},
lockSource: function () {
    …
    var settings = // analoguous, no callbacks here
    return $.ajax(settings).fail(function(response) {
        $("#facebox-source-quote-status").html('<font color="red">UNABLE TO SELECT</font>');
    });
}
var q = new app.models.OverwriteLineItemsProcess();
q.set('id', $("#process_id").val());
q.saveSource($("#source_quote").val()).then(function(saveResponse) {
    console.log(saveResponse);
    return q.lockSource();
}).done(function(lockResponse) {
    console.log(lockResponse);
});