2012-04-23 59 views
0

是否有可能通過參數在Backbone.js中創建模型和視圖?
我儘量簡單的像是否可以使用參數在Backbone.js中創建模型和視圖?

var TestModel = Backbone.Model.extend({ 
     initialize: function(test){ 
     this.set('test',test); 
     alert("test"); 
    } 
}); 

,但我得到的消息this.set不是一個函數

+0

你先初始化模式?你能告訴我們代碼,你在哪裏得到錯誤?此外,您在上面的代碼中缺少了}和a)。就目前而言,該代碼不會運行。 – tkone 2012-04-23 13:30:47

+0

@tkone我忘了粘貼}),但我有代碼。 – Damir 2012-04-23 13:31:57

回答

2

您的示例代碼中存在語法錯誤,但應該可以正常工作。您還需要考慮到模型的attributes作爲第一個參數,並引用通用options對象作爲第二個參數(見代碼在這裏http://backbonejs.org/docs/backbone.html#section-28

從你的示例代碼,但是,它看起來像你只是想將數據傳遞給模型,該模型將自動處理。


var TestModel = Backbone.Model.extend({}); 

var t = new TestModel({foo: "bar"}); 

console.log(t.get("foo")); 

或者,如果你正在試圖獲得一些選項,你可以這樣做:


var TestModel = Backbone.Model.extend({ 
    initialize: function(attrs, options){ 
    console.log(options.foo); 
    } 
}); 

var t = new TestModel(null, { 
    foo: "bar" 
}); 
1

簡短的回答是肯定的。你沒有表現出足夠的代碼,但這個工程:

var TestModel = Backbone.Model.extend({}); 

var t = new TestModel({test: 'test'}); 

t.get('test'); 
>>> test 

你不能什麼傳遞到initialize方法,但你可以在一個散列通,當你實例化對象。

雖然,因爲它不會做創建(所以它總是會返回一個有效的模型)驗證,你最好這樣做:

var t = new TestModel(); 
t.set('test', 'test'); 

所以,如果你的價值不驗證你將能夠收到它的錯誤。

0

對象「這個」擁有所有值「屬性」。所以,如果你想訪問任何屬性,

你可以嘗試

alert(this.attributes.test)

相關問題