Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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)_Javascript_Javascript Events - Fatal编程技术网

为什么有时需要一个虚拟对象来存储事件(JavaScript)

为什么有时需要一个虚拟对象来存储事件(JavaScript),javascript,javascript-events,Javascript,Javascript Events,我不明白为什么有时候你需要在JavaScript中有一个虚拟对象来存储evetns,比如下面的代码 Metal.Gold = function() { var temp = $("<div>"); //dummy object this.Submit = function(url1, method, data){ temp.trigger("Submit", data); //invoke trigger for dummy object?? $.

我不明白为什么有时候你需要在JavaScript中有一个虚拟对象来存储evetns,比如下面的代码

Metal.Gold = function() {
   var temp = $("<div>"); //dummy object
   this.Submit = function(url1, method, data){
      temp.trigger("Submit", data); //invoke trigger for dummy object??
      $.ajax({
         url:url1,
         data:JSON.stringify(data),
         contentType: "application/json; charset=utf-8",
         dataType:"json",
         success: function(data){
            temp.trigger("SubmittSuccess", data); //????
            //doSomething
         },
         error: function(error){
           temp.trigger("SubmitFailure", error);// ???
         }
      });
   }
}

我已搜索所有文件,但找不到任何名为SubmitQuantitySuccess的方法。我不知道数据或错误返回时发生在何处以及发生了什么。

这并不是最好的方法。我从未见过这样的事,但我想它会有用的

您可能希望在Submit函数中返回
$.ajax
调用,该调用将返回一个jqXHR对象(延迟对象)

那么你可以做:

var myGold = new Metal.Gold();

myGold.Submit(arg1, arg2, arg3)
    .done(function () { ... })
    .fail(function () { ... });
关于jQuery的延迟对象的更多信息


和jQuery的jqXHR对象

,因为它们希望发送事件,但不希望在全局范围内(即在文档上)发送事件。另外,这三次是因为发送的事件和数据不同。
Metal.Gold = function() {
    this.Submit = function(url1, method, data){
        return $.ajax({
            url:url1,
            data:JSON.stringify(data),
            contentType: "application/json; charset=utf-8",
            dataType:"json"
        });
    }
}
var myGold = new Metal.Gold();

myGold.Submit(arg1, arg2, arg3)
    .done(function () { ... })
    .fail(function () { ... });