2011-03-03 11 views
0

SproutcoreとRailsを使って、属性のスラッグやコメントのような文字列をどこに置くべきか疑問に思っています。モデル属性のスラッグとコメントはモデルレイヤーにあるべきですか?

モデルレイヤーには、いくつかのモデルクラスがあります。

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', 
    ... 
}); 

を次のように一般的なコントローラのセットアップが見えるかもしれませんそれは、例えば、いくつかのグループ化を行うには、コントローラ内部で定義された1つまたは複数のオブジェクトのコントローラ内の追加の特性を組み合わせることが意味をなすかもしれません

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' 
    }) 
}); 

これは、後であなたのビューでよりクリーンな構造につながる可能性があります。

これを簡単に言えば、モデルオブジェクトは、クラスパラメータを持たない従来のドメインオブジェクトとみなすと、ドメインオブジェクトの各インスタンスに固有の(潜在的に)パラメータのみを使用します。他のすべてがあなたのコントローラレイヤーに入ります。ビューができるだけダンプ状態になり、必要なすべてのアプリケーション状態へのバインディングのみが含まれていることを確認してください。

関連する問題