2012-04-06 157 views
0

我無法跟蹤模型實例的屬性。比如我有宣言,如:Backbone.js模型屬性常量 - 這是一個好習慣嗎?

MyModel = Backbone.Model.extend({}); 

然後在我的意見,我經常做這樣的事情:

var someVal = this.model.get('someProperty'); 

我開始通過將它們封裝移動搜索的字符串爲常數的任務在一個對象,並把它當作第二個參數到View的構造函數,例如:

SchemaOptionsView = Backbone.View.extend(
    { /* Body of View here as usual */}, 
    { 
     TEMPLATE: '#View-Template', 
     INPUT_REQUIRED:'required' 
    }); 

當我開始思考,我可以用我的模型做這個解決兩個問題:

MyModel = Backbone.Model.extend(
{ /* Body of Model here as usual */}, 
{ 
    PROPERTY_1 = 'p1', 
    PROPERTY_2 = 'p2' 
}); 

然後我可以使用常量來檢索屬性值:

var someVal = this.model.get(MyModel.PROPERTY_1); 

這將讓我清楚地看到模型實例包含的屬性,也可移動字符串值轉換成一個常數一個合適的地方。

我還沒有看到這個推薦或在任何例子。我錯過了什麼嗎?人們對這個想法有什麼看法?

回答

2

這是解決一個非問題。您的模型應該具有明確定義的屬性 - 我們使用默認散列來枚舉模型的所有可用屬性。這不僅提供了模型擁有的屬性的目錄,還提供了重寫未驗證輸入的方法。

+0

你能提供一個如何枚舉模型的可用屬性的例子嗎? – Jack 2012-04-08 04:42:10

+0

@Jack是的。模型聲明的默認哈希。如果你看看我的[驗證庫](http://github.com/toddself/Backbone.Validator/)上的例子,你會看到我正在引用的東西。 – tkone 2012-04-08 22:53:18

+0

@傑克我知道這是一個非常古老的東西,但可能會幫助野外的人。 所以,你會爲模型myModel myModel.toJSON()返回一個包含其所有屬性的對象 – 2013-08-31 02:11:30

相關問題