Spine.js и флажок выбора всех
Я пытаюсь сделать tableView с флажком select-all на spine.js и coffeescript. Я не могу понять, как я могу связать выбор все нажмите, чтобы выбрать все модели в таблице. Флажок "select-all" отображается в представлении UserList. ItemView код:
class UserItem extends Spine.Controller
className: 'user-item'
tag: 'tr'
elements:
'input[type="checkbox"]': 'checkbox'
events:
'click input[type="checkbox"]': 'itemChbClicked'
constructor: ->
super
@item.bind("update", @render)
@item.bind("destroy", @remove)
render: ->
@html require('views/user/item')(@item)
@
remove: =>
@el.remove()
itemChbClicked: (e) ->
@item.selected = @checkbox.is(':checked')
Код ItemList:
class UserList extends Spine.Controller
className: 'user-list'
elements:
'.items': 'items'
".select-all": "select_all_chb"
constructor: ->
super
@html require('views/user/list')()
User.bind("create", @addOne)
User.bind("refresh", @addAll)
User.fetch()
addOne: (user) =>
view = new UserItem(item: user)
@items.append(view.render().el)
addAll: =>
User.each(@addOne)
Любая помощь будет оценена! Спасибо!
1 ответ
Решение
Похоже, ты рядом. В UserList создайте функцию select_all_chb и попросите ее изменить пользователей:
class UserList
select_all_chb: =>
User.each (user) ->
user.selected = true
user.save()
Поскольку вы связали событие "change" с "render", все элементы контрольного списка будут перерисованы.