0

私はテスト用の .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;
},
4

2 に答える 2

2

これはそれほど優れているわけではありませんが、コレクションのどこかにプロパティのリストを保存し、そこから URL を作成できます。例えば。

importSelect.myDataList = {
        importPhone: '5555555555',
        busImportName: 'test business',
        busImportCID: '12345',
        busImportBID: '1234567890'
    };
importSelect.fetch({ ... });

そして、次のような関数を使用してURLを作成します(コードはテストされていません)

function constructUrl(data) {
    var result = "";
    var count = 0;
    for(var i in data) {
       var prefix = "&";
       if(count == 0) {
           prefix = "?";
       }
       result += prefix + i + "=" + data[i];
    }
    return result;
}

関数を使用して URL を作成します

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

それが役立つことを願っています。

于 2012-08-14T04:28:57.050 に答える
0

関数を定義することで正しい方向に進んでいると思いますurl。ページから直接ではなく、コレクションからクエリパラメータを取得するだけです。コレクションは、ロードされているアイテムの種類を認識できる必要があるため、何らかの方法でコレクションインスタンスを使用してクエリパラメータを格納することは理にかなっています。以前、コレクション定義でオブジェクトを使用しました。ただし、注意してください。そうしないと、これらのコレクションインスタンスすべてで共有されるオブジェクトになってしまう可能性があります。

補足:さまざまなクエリパラメーターによるクエリから生成される可能性のあるコレクションに対して、クエリパラメーターのみをモデル化した関連モデルが存在するように設定するように以前から誘惑されました。モデルとコレクション間のイベントバインディングを介して、モデルの値を変更すると、コレクション内のフェッチが自動的にトリガーされる可能性があります。しかし、それは合理的なトリガーでしょうか?わからない。

于 2012-08-14T04:44:11.800 に答える