2014-07-07 3 views
0

어쨌든 Ember 앱의 확인란은 항상 처음에 선택되어 있습니다.Ember.js 체크 박스 바인딩 초기 값이 잘못 설정되었습니다.

... 
{{#each model.fields}} 
... 
    {{input type="checkbox" checked=isOptional}} 

fields 배열은 내 모델의 속성입니다. fields 배열의 각 객체에는 isOptional이라는 속성이 있으며 "true"또는 "false"가 될 수 있습니다.

isOptional의 값에 관계없이 어떤 이유로 든 확인란이 처음 선택됩니다.

확인란을 수동으로 선택하면 isOptional 플래그가 실제로 변경됩니다. 따라서 바인딩은 초기 값을 찾는 것을 제외하고는 작동합니다.

도움을 주셔서 감사합니다.


편집 : 주석에서 설명하고있는 바와 같이 내 모델이 따옴표 "false"를 가지고 확인 확인란의 결과로, 실제 값으로 해석했다 Ember.$.getJSON()에 의해 반환 된 때문에, 문제가 있었다. 당신이 당신의 자신의 jsbin를 제공 할 수있는 경우 우리는 더 도울 수, http://emberjs.jsbin.com/kukokiti/1/

바이올린 수

model.fields.forEach(function(field, i) { 
    Ember.set(field, 'isOptional', (field.isOptional == 'true')); 
}); 
+0

isOptional 속성에 ANY 값이 없습니까? false, null 또는 undefined 이외의 값을 지정하면 확인란이 선택됩니다. –

+0

고마워, 그게 문제가 될 것 같아! "Ember. $. getJSON"을 사용하여 "false"를 따옴표로 반환하는 내 모델을 가져옵니다. Ember에게 부울로 해석하도록 요청하는 간단한 방법이 있습니까? – Daniel

+0

이것이 유용 할 수도 있습니다 - http://emberjs.com/api/data/classes/DS.BooleanTransform.html -하지만 TBH 나는 Ember.Data를 사용하지 않기 때문에 나보다 나은 리소스가있을 수 있습니다. –

답변

0

jsbin 예 : 나는 오버 작성 부울 값이에 의해 해결.

편집 : 문자열 값에서 'false'의 효과를 볼 수 있습니다.

가장 쉬운 방법은 사용중인 모델에서 계산 된 속성을 정의하는 것입니다.

+0

도움을 주셔서 감사합니다 .. isOptional은 model.fields 배열의 요소에 속하므로 계산 된 속성이 여기에 도움이되지 않을 수도 있다고 생각하십니까? – Daniel

+0

바이올린을 사용하기 전에 Ember.Object에 객체를 채울 수있는 방법을 보여주기 위해 바이올린을 업데이트했습니다. – TameBadger

+0

.. 배열의 각 요소에서 계산 된 속성을 사용합니다. 제 경우에는 배열을 검토하고 따옴표를 제거하는 것이 더 쉽습니다. 그러나 좋은 예와 제안입니다. – Daniel