簡體   English   中英

具有動態參數的主干模型網址

[英]backbone Model url with dynamic parameter

我處於一種情況下,我想從Model屬性動態填充Model url

這是我的代碼

var MailboxModel = Backbone.Model.extend({
     defaults: {
         key: 'inbox',
         filter: 'date',
         orderby: 'desc',
         mailPageSize: 10,
         pageOffSet: 0
     },

     url: window.sessionStorage.getItem('mail_link') + "/" + this.key + "?order_by=" + this.filter + "&order=" + this.orderby + "&offset=" + parseInt(this.pageOffSet) + "&count=" + this.mailPageSize  
    // the output will be http://website.com/rest/users/123456/mail/inbox?order_by=date&order=desc&offset=0&count=10  
     // instead output is "http://website.com/rest/users/1926856/mail/inbox?order_by=undefined&order=undefined&offset=NaN&count=undefined" 
 });

還是這種方式? 兩者都不起作用

            var mailboxmodel =new MailboxModel({});
            mailboxmodel.set('key', sessionStorage.getItem('message_key'));
            mailboxmodel.set('filter', 'subject');
            mailboxmodel.set('orderby', 'desc');
            mailboxmodel.set('mailPageSize', 10);
            mailboxmodel.set('pageOffSet', 0);   

 var mailboxlist = new MailboxList({
     model: new MailboxModel,
     render: function(){
     // render function is working fine 
     }

 });

 mailboxlist.render();
 Backbone.history.start();
 });

它不起作用的原因是,在設置url屬性時,尚未設置默認值。 要解決此問題,您可以使用返回url的函數。

例如

var MailboxModel = Backbone.Model.extend({
     defaults: {
         key: 'inbox',
         filter: 'date',
         orderby: 'desc',
         mailPageSize: 10,
         pageOffSet: 0
     },

     url: function () {
         return window.sessionStorage.getItem('mail_link') + "/" + this.key + "?order_by=" + this.filter + "&order=" + this.orderby + "&offset=" + parseInt(this.pageOffSet) + "&count=" + this.mailPageSize;
     }
 });

您也可以在initialize方法中進行設置

var MailboxModel = Backbone.Model.extend({

   //...
   initlaize: function (options) {
     this.url = ....
   }
});

我在實例化模型時傳遞所有值的解決方案解決了這個問題。 像這樣。

url : /somePath/' + @key + '/' + @filter

initialize:(options)->
    @key = options.key
    @filter = options.filtes
    // ....  

 getSomeThing:->
     @fetch()

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM