Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/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
Backbone.js 主干模型Sync()和$.mockjax()_Backbone.js_Mockjax - Fatal编程技术网

Backbone.js 主干模型Sync()和$.mockjax()

Backbone.js 主干模型Sync()和$.mockjax(),backbone.js,mockjax,Backbone.js,Mockjax,我正在将现有应用程序的UI从GWT移植到主干网。后端保持不变。后端中的所有请求都由一个端点处理。URL编码的参数确定响应应该是什么。例如: http://localhost/adminNPS?request=getDashboard&object=dash&id=2 http://localhost/adminNPS?request=getDashboard&object=dash&id=3 http://localhost/adminNPS?request=sa

我正在将现有应用程序的UI从GWT移植到主干网。后端保持不变。后端中的所有请求都由一个端点处理。URL编码的参数确定响应应该是什么。例如:

http://localhost/adminNPS?request=getDashboard&object=dash&id=2
http://localhost/adminNPS?request=getDashboard&object=dash&id=3
http://localhost/adminNPS?request=saveDashboard&object=dash&id=1 ... {json}
http://localhost/adminNPS?request=getUser&object=user
http://localhost/adminNPS?request=createUser&object=user ... {json}
http://localhost/adminNPS?request=getUserPermissions&object=user
不要问是谁设计了这个计划。。现在,我必须设计主干模型/集合以连接到此端点,并使用mockjax模拟ajax调用。。所以我现在有两个问题

  • 如何在
    mockjax
    中为此创建模拟调用?使用下面的方法很好。。但需要URL中参数的精确顺序
    mockjax
    的文档状态参数可以与
    数据:{key:value}
    哈希匹配。。但这对我不起作用。。有人能进一步指导我吗

    $.mockjax({
        url: http://localhost/adminNPS?request=getDashboard&object=dash&id=2,
        responseText: { ... }
    });
    
  • 如何对模型进行编码,例如,仪表板模型访问
    http://localhost/adminNPS?request=getDashboard&object=dash&id=3
    获取和
    http://localhost/adminNPS?request=saveDashboard&object=dash&id=3
    保存时


  • 关于使用
    数据
    选项匹配查询参数,这是一个很好的选择。基本上,请求匹配器只处理
    $.ajax()
    调用上的数据对象,而不是查询字符串

    也就是说,有两种方法可以解决这个问题:

    1) 您可以使用:

    2) 或者,您可以通过传入函数来使用:

    $.mockjax(function(settings) {
      // examine `settings.url` which would be something like:
      // http://localhost/adminNPS?request=getDashboard&object=dash&id=2
    
      var q = settings.url.split('?')[1].split('&');
      var data = {}; // will be a hash of the query data
      for (var i=0, l=q.length; i<l; ++i) {
        data[q[i].split('=')[0]] = q[i].split('=')[1];
      }
    
      // Now you can look at the `data` object to do your matching
    
      if ( /* the URL matches what you want */ ) {
        return {
          response: function () {
            this.responseText = { ... }; /* whatever you want the response to be */
          }
        };
      }
      return; // no match
    });
    
    $.mockjax(函数(设置){
    //检查“settings.url”,类似于:
    // http://localhost/adminNPS?request=getDashboard&object=dash&id=2
    var q=settings.url.split('?')[1].split('&');
    var data={};//将是查询数据的哈希
    
    对于(var i=0,l=q.length;i,关于使用
    data
    选项匹配查询参数,这是一个。基本上,请求匹配器只处理
    $.ajax()
    调用上的数据对象,而不是查询字符串

    也就是说,有两种方法可以解决这个问题:

    1) 您可以使用:

    2) 或者,您可以通过传入函数来使用:

    $.mockjax(function(settings) {
      // examine `settings.url` which would be something like:
      // http://localhost/adminNPS?request=getDashboard&object=dash&id=2
    
      var q = settings.url.split('?')[1].split('&');
      var data = {}; // will be a hash of the query data
      for (var i=0, l=q.length; i<l; ++i) {
        data[q[i].split('=')[0]] = q[i].split('=')[1];
      }
    
      // Now you can look at the `data` object to do your matching
    
      if ( /* the URL matches what you want */ ) {
        return {
          response: function () {
            this.responseText = { ... }; /* whatever you want the response to be */
          }
        };
      }
      return; // no match
    });
    
    $.mockjax(函数(设置){
    //检查“settings.url”,类似于:
    // http://localhost/adminNPS?request=getDashboard&object=dash&id=2
    var q=settings.url.split('?')[1].split('&');
    var data={};//将是查询数据的哈希
    
    对于(var i=0,l=q.length;它支持jakerella的响应。但是核心参数仍然没有得到解决。哪一个正则表达式可以匹配并捕获这两个URL中的
    请求
    对象
    变量值。
    /adminNPS?request=abc&object=xyz
    /adminNPS?object=xyz&request=abc
    。唯一的我的解决方案是:1.定义多个正则表达式排列,并对每个排列进行测试(请求>对象和对象>请求)。2.定义单个正则表达式并确保查询字符串仅包含固定顺序的参数。实际上,如果使用选项(2)在我的回答中,您可以从url提取整个查询字符串,在
    &
    上拆分它,然后查看每个参数以确定是否匹配。我可以更新代码以显示…同意..这当然是一种方式..就像多个正则表达式一样..但在我看来,有点混乱..我的情况下的理想情况是ld是一个单独的正则表达式,它可以捕获所有参数,而不考虑它们的出现顺序。然而,我认为这可能是一厢情愿的想法,可能没有正则表达式可以做到这一点。在这种情况下,您的答案是次优选项。因此正确:)有一个正则表达式可以做到这一点…它非常混乱,可能不太容易维护。基本上,你必须考虑每个位置的每个选项,或者进行前向/后向匹配。同样,可能,但可能不太理想。感谢jakerella的回复。但是核心参数仍然没有得到解决。哪一个正则表达式x可能会匹配并捕获这两个URL中的
    请求
    对象
    变量值。
    /adminps?request=abc&object=xyz
    /adminps?object=xyz&request=abc
    。我唯一的解决方案是:1.定义多个正则表达式排列,并对它们进行测试(request>object和object>request).2.定义单个正则表达式并确保查询字符串仅包含固定顺序的参数。实际上,如果使用选项(2)在我的回答中,您可以从url提取整个查询字符串,在
    &
    上拆分它,然后查看每个参数以确定是否匹配。我可以更新代码以显示…同意..这当然是一种方式..就像多个正则表达式一样..但在我看来,有点混乱..我的情况下的理想情况是ld是一个单独的正则表达式,它可以捕获所有参数,而不考虑它们的出现顺序。然而,我认为这可能是一厢情愿的想法,可能没有正则表达式可以做到这一点。在这种情况下,您的答案是次优选项。因此正确:)有一个正则表达式可以做到这一点……它非常混乱,可能不太容易维护。基本上,你必须考虑每个位置的每个选项,或者进行向后看/向前看匹配。同样,可能,但可能不太理想。