2014-11-05 45 views
1

在我的鉻控制檯,它說有一個從骨幹錯誤 - 未捕獲的錯誤:「URL」屬性或功能必須指定骨幹未捕獲的錯誤:

我能夠取代我的Backbone.js的來解決這個問題從版本1.1.2到1.0.0的腳本。任何人都可以解釋爲什麼最新版本的Backbone會給我一個錯誤,因爲舊版本沒有?

我在下面的語法中有什麼問題,我嘗試將集合url設置爲api地址?

var daysCollection = new DaysCollection([], { 
     url: 'http://api.wunderground.com/api/94c558eeb4e503dc/forecast/q/CA/San_Francisco.json' 
    }); 

    daysCollection.fetch({ 
     success: function (collection, response, options) { 
      console.log(collection, response); 
     }, 
     error: function (collection, response, options) { 
      console.log('error'); 
     } 
    }); 

讓我知道如果我需要提供更多的細節。

回答

4

主幹不會將urlurlRoot從選項添加到模型或集合中。從changelog for 1.1.0

Backbone Views no longer automatically attach options passed to the constructor as this.options and Backbone Models no longer attach url and urlRoot options, but you can do it yourself if you prefer.

雖然它沒有具體說Collection S,如果你看一下(1.0.0和1.1.2)之間的代碼差異,你會看到下面這行已經從刪除Backbone.Collection構造:

if (options.url) this.url = options.url; 

有一對夫婦的解決方案,首先是剛剛設置的url算賬:

var daysCollection = new DaysCollection([], {}); 
daysCollection.url = 'http://api.wunderground.com/api/94c558eeb4e503dc/forecast/q/CA/San_Francisco.json'; 

或者,你可以選擇這行添加到您的initialize功能集合:

var DaysCollection = Backbone.Collection.extend({ 
    initialize: function(models, options){ 
     if (options.url) this.url = options.url; 
    } 
}); 
+0

太感謝你了澄清這個! – 2014-11-05 15:33:48

+0

非常感謝這個,我停止在Backbone的v.1.0工作,並開始將我的應用程序移植到1.2.3,這是我一直在尋找的答案。我將這些選項添加到我的初始化方法中,並且我的視圖正在渲染。 – 2016-03-10 00:55:17