다음은 Ember 구성 요소를 기반으로하는 작업 솔루션입니다.
모든 엣지 경우를 처리하지 않습니다. 구성 요소가 렌더링 된 후에 변경되는 바운드 값이지만 기본은 수행합니다. 필요한 경우 쉽게 확장 할 수 있습니다.
가 갖는 배열을 위해 Ember.A()
를 사용하여 구성 될 수 addObject
등
요소 :
App.ArrayCheckboxComponent = Em.Component.extend({
value: null # included in array when checked
array: null # array to bind to
_checked: null # boolean
init: ->
@_super.apply(this, arguments)
array = @get('array')
unless array.addObject && array.removeObject && array.contains
throw new Error('Array used for `ArrayCheckboxComponent` must implement addObject/removeObject')
if array.contains(@get('value'))
@set('_checked', true)
else
@set('_checked', false)
checkedDidChange: (->
value = @get('value')
array = @get('array')
if @get('_checked')
array.addObject(value)
else
array.removeObject(value)
).observes('_checked')
})
부품 서식 :
{{view Em.Checkbox checkedBinding='_checked'}}
사용법 :
{{array-checkbox value='item1' arrayBinding='path.to.array'}}
더 많은 구성 요소는 :
http://emberjs.com/guides/components/
이 꽤 멋지다. 나는 그것을 소용돌이 치고 돌아올거야. – JDillon522
잘 했어! 내 필요에 맞게 몇 가지를 조정해야했지만 그래. 나는 어디에서 시작해야할지 몰랐다. 그리고 이제 나는 알고있다. "아는 것이 전쟁의 절반이다." (트릭은 특정 컨트롤러를'{{#each}} '에 전달하는 것이 었습니다. – JDillon522