2011-03-03 61 views
0

即時通訊使用Sproutcore和Rails,並想知道在哪裏放置字符串像屬性slu and和註釋。模型屬性slug和註釋是否在模型層?

在模型層,我有一些模型類,例如。

SC.User = SC.Record.extend({ 

    firstName: '', 

}) 

我應該把屬性蛞蝓和意見在這裏的模型類:

SC.User = SC.Record.extend({ 

    firstName: '', 
    firstNameSlug: 'First name', 
    firstNameComment: 'Enter your first name', 

}) 

還是應該這是從模型脫鉤的意見?

在模型類中擁有的好處是,我現在可以擁有一個通用視圖,它可以迭代所有模型屬性並自動顯示它們。

您認爲如何?

回答

1

Sproutcore基於模型 - 視圖 - 控制器範例,而且它使用了一個相當保守的嚴格版本的mvc。您的模型應該只包含某個域對象的實際值。因此,你不要在模型對象中放置註釋和佔位符字符串。

取而代之,使用您的控制器綁定到您的模型對象以及要從視圖中耦合的所有其他屬性。一個典型的控制器設置看起來如下

YourApp.userController = SC.ObjectController.extends({ 
    user: SC.User.create({ ... }), // Create a new user or load one from the store 
    firstNamePlaceholder: 'First name', 
    firstNameComment: 'Enter your first name', 
    ... 
}); 

這可能是有意義的在控制器內定義的一個或多個對象在控制器內的附加屬性結合起來,做一些分組,例如

YourApp.userController = SC.ObjectController.extends({ 
    user: SC.User.create(), 
    placeholder: SC.Object.create({ 
     firstName: 'First name', 
     lastName: 'Last name', 
    }), 
    comment: SC.Object.create({ 
     firstName: 'Enter your first name', 
     lastName: 'Enter your last name' 
    }) 
}); 

這可能會在您以後的觀點中產生更清晰的結構。

簡而言之,將您的模型對象視爲沒有類參數的傳統域對象,僅使用對您的域對象的每個實例(可能)都是唯一的參數。其他一切都進入你的控制器層。確保您的視圖儘可能保留轉儲狀態,並且只包含所有必需應用程序狀態的綁定。