2012-11-22 2 views
1

내 Backbone 응용 프로그램에서 모델은 HTTP JSON API에서 데이터를 검색 할 때 인스턴스화됩니다. 값은이 서비스와 다르므로 defaults을 제공하는 일관성을 결정하여 모든 모델이 적어도 동일한 기본 속성을 공유하도록했습니다. 예를 들어 템플리트에 유용합니다.백본 모델 기본값 : null? 빈 문자열? 빈 배열?

각 속성에 할당 할 수있는 가장 좋은 값은 무엇일까요? 일부 문자열, 일부 숫자, 다른 배열됩니다. 확실하지 않은 경우 모든 사람을 위해 기본적으로 null을 할당해야하는지 (현재 내가하고있는 일입니다) 또는 빈 문자열 ""을 향후 문자열에 사용하고 빈 배열 []을 향후 배열에 사용해야하는지 잘 모릅니다.

+1

필요한 항목에 따라 다릅니다. 예를 들어, 날짜 필드가있는 경우 기본값으로 현재 시간을 사용할 수 있습니다. 배열에서는''[]''을 사용합니다. 문자열은 널 또는'' "''일 수 있습니다. (''str ==" "''또는''typeof str =="undefined "'') – 23tux

+1

주로 모델 속성을 사용합니다. (Handlebars를 사용하는) 템플리트를 사용하므로 값의 위조 여부 만 확인하면됩니다. 현재 시간은 내 앱의 옵션이 아닙니다. – DjebbZ

답변

3

일반적으로 null 값을 할당합니다. null을 실제 값으로 사용하지 않을 것입니다. 따라서 내 응용 프로그램의 내용이 null 인 경우 어딘가에 문제가 있음을 알 수 있습니다.

덧붙여 defaults 속성을 통해 빈 배열이나 객체를 지정할 때는주의해야합니다. 이렇게하면 배열/객체가 모델의 각 인스턴스에 복사되는 대신 각 인스턴스에서 참조되므로 동일한 데이터가 모두 수정됩니다.

+0

두 번째 단락을 가져올 지 확실하지 않습니다. 어떻게 든 빈 배열/객체를 만들면 각 인스턴스가 만들어 질 때 메모리에 단일 값이 만들어집니다. 300 번 라인의 백본 소스 코드 (0.9.2)에서'options.unset? 지금 삭제 [attr] : now [attr] = val;'(실제로 인스턴스에 값을 추가하는 것은 [attr] = val입니다.) 따라서 빈 배열/객체를 생성하면 매우 빈 배열/객체가 인스턴스화 될 때 내 컬렉션의 모든 모델에서 참조하게됩니다. – DjebbZ

+3

@DjebbZ : 기본 : {a : []}'이면 동일한 기본 배열이 기본값을 사용하는 모든 인스턴스에서 공유되며 기본값은 얕게 복사됩니다. 그러나,'defaults : function() {return {a : []}}'라고하면 각 인스턴스에 대한 고유 한 기본값을 얻을 수 있습니다. 일반적으로 어떤 값이 가변 객체 인 경우 함수형의 기본값을 사용하려고합니다. –

+0

감사합니다. 내 경우에는 'null'을 고수 할 것입니다. 'default'의'function' 형식은'null' 값으로 가득 차 있기 때문에 필요하지 않습니다. 그런데, @muistooshort와 같은 함수 형태를 사용한다면, 모델이 인스턴스화 될 때 프라퍼티'a'가 오버라이드되지 않는다면, 프로그램은 더 큰 메모리 풋 프린트를 가질 것인가? – DjebbZ