2013-11-15 98 views
2

在我的控制器中,我將一個名爲'url'的參數傳遞給視圖。這成功地傳遞到初始化函數。接下來,當我創建我的模型時,我想將相同的參數傳遞給模型以用作rooturl。骨幹傳遞參數到模型url

下面是我已經試過,但我得到了以下錯誤消息:

A "url" property or function must be specified 

這似乎是一個參數沒有被傳遞到模型(未定義)或我不是在正確地調用它模型。 我在這裏做錯了什麼?

注:的console.log(options.url)在初始化函數視圖確認參數從控制器成功地傳遞給視圖,這些問題是從視圖中它是不確定的模型。

控制器:

var myview = new NewView({ 
      url:"api/" 
     })** 

查看:

var myview = Backbone.Marionette.ItemView.extend({ 

     initialize: function (options) { 
      this.url = options.url; 
      this.model.fetch(); 
     }, 


    model: new myModel({ 
      url: this.url 
     }), 

基於myModel:

var myModel = Backbone.Model.extend({ 
    urlRoot: function(){ return this.get('url') } 

}); 

回答

5

您正在試圖用一個空的URL來獲取你的模型。

當你撥打:

initialize: function (options) { 
    this.url = options.url; 
    this.model.fetch(); 
} 

fetch在這裏,您不必爲模型的URL。所以,你可以這樣做:

initialize: function (options) { 
    this.url = options.url; 
    this.model.set({url: this.url}); 
    this.model.fetch(); 
} 
+0

這就是我需要的。謝謝 – Prometheus

0

當寫

model: new myModel({ 
     url: this.url 
    }), 

視圖尚未初始化

您可以實例化視圖的初始化方法模型

initialize: function (options) { 
     this.url = options.url; 
     this.model = new myModel({ 
      url: this.url 
     }) 
     this.model.fetch(); 
    }, 
+0

它似乎不喜歡那種給予無法調用未定義消息的方法'fetch'。網址在模型中仍未定義。 – Prometheus