2011-03-03 2 views
0

나는 Sproutcore와 Rails를 사용하여 속성 슬러그 (slugs)와 주석 (comment)과 같은 문자열을 어디에 넣어야하는지 궁금합니다.모델 속성 슬러그와 주석이 모델 레이어에 있어야합니까?

모델 계층에는 몇 가지 모델 클래스가 있습니다.

SC.User = SC.Record.extend({ 

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

}) 

또는 이러한 모델에서 분리 견해에 있어야합니다 :

SC.User = SC.Record.extend({ 

    firstName: '', 

}) 

나는 모델 클래스 여기에 속성 슬러그과 의견을 넣어해야 하는가?

모델 클래스에서의 이점은 모든 모델 속성을 반복하여 자동으로 표시하는 일반 뷰를 가질 수 있다는 것입니다.

당신은 어떻게 생각하십니까?

답변

1

Sproutcore는 model-view-controller 패러다임을 기반으로하며, 더욱 보수적 인 엄격한 버전의 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' 
    }) 
}); 

이렇게하면 나중에보기에 더 깨끗한 구조가 될 수 있습니다.

간단히 말해서 모델 객체를 클래스 매개 변수가없는 기존 도메인 객체로 생각하면 도메인 객체의 각 인스턴스에 고유 한 (잠재적으로) 매개 변수 만 사용됩니다. 다른 모든 것은 당신의 컨트롤러 레이어에 들어갑니다. 보기가 가능한 한 덤프로 유지되고 모든 필수 응용 프로그램 상태에 대한 바인딩 만 포함시켜야합니다.