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 Backbone.js将url参数传递给集合_Javascript_Backbone.js - Fatal编程技术网

Javascript Backbone.js将url参数传递给集合

Javascript Backbone.js将url参数传递给集合,javascript,backbone.js,Javascript,Backbone.js,我正在使用一个test.json文件,并且可以在成功中很好地将url记录到console.log中,但是我现在尝试将参数附加到url中,它们被忽略 这就是视图的外观,工作正常,并显示一个测试json文件的成功消息: busImportSearch: function() { importSelect.fetch({ data: { importPhone: '5555555555', busImportName: 'test

我正在使用一个test.json文件,并且可以在成功中很好地将url记录到console.log中,但是我现在尝试将参数附加到url中,它们被忽略

这就是视图的外观,工作正常,并显示一个测试json文件的成功消息:

busImportSearch: function() {
    importSelect.fetch({
        data: {
            importPhone: '5555555555',
            busImportName: 'test business',
            busImportCID: '12345',
            busImportBID: '1234567890'
        },
        success: function(results) {
            // url console.log's fine just no params
        }
    });
}
这是我收藏的:

var importSelect = Backbone.Collection.extend({
    model: importModel,

    url:'somepath/test.json',

    sync: function(method, model, options) {
        options.timeout = 10000;
    options.dataType = "json";
        return Backbone.sync(method, model, options);
    },

    parse: function(response) {
        console.log(this.url);
        if (typeof response.data !== 'undefined') {
            this.result = response.data.list;
         }
        return this.result;
     },
});

 return new importSelect;
});
编辑
我认为这是可行的,但我认为有更好的方法:

url: function() {
  var busimportPhone = $("#busImportPhone").val();
  var busImportName = $("#busImportName").val();
  var busImportCID = $("#busImportCID").val();
  var busImportBID = $("#busImportBID").val(); 
  var updateUrl = 'test.json' + '?importPhone=' + busimportPhone + '&importName=' + busImportName + '&importCID=' + busImportCID + '&importBID' + busImportBID; return updateUrl;
},

这并不是更好,但是您可以将属性列表存储在集合的某个位置,并从那里创建url。例如

importSelect.myDataList = {
        importPhone: '5555555555',
        busImportName: 'test business',
        busImportCID: '12345',
        busImportBID: '1234567890'
    };
importSelect.fetch({ ... });
并使用类似(未测试代码)的函数构造url

并使用函数创建Url

...
url: function() { 
    return constructUrl(this.data);
}

希望这能有所帮助。

我认为通过定义
url
函数,您已经走上了正确的道路,只需从集合中获取这些查询参数,而不是直接从页面中获取。集合应该能够知道加载了什么类型的项,因此以某种方式将查询参数存储在集合实例中是有意义的。在过去,我在集合定义中使用了一个对象。但要小心,否则最终可能会得到一个由所有这些集合实例共享的对象


旁注:我曾经尝试过这样的设置:对于通过各种查询参数查询生成的任何集合,都会存在一个只对查询参数建模的关联模型。通过模型和集合之间的事件绑定,更改模型的值可以自动触发集合中的提取。但这是合理的触发因素吗?我不确定。

我认为这是可行的,但我认为有更好的方法:url:function(){var businportphone=$(“#businportphone”).val();var businportname=$(“#businportname”).val();var businportcid=$(“#businportcid”).val();var businportbid=$(“#businportbid”).val();var updateUrl='test.json'+'?importPhone='+busimportPhone+'&importName='+busImportName+'&importCID='+busImportCID+'&importBID'+busImportBID;返回updateUrl;},
...
url: function() { 
    return constructUrl(this.data);
}