Backbone.js가 아키텍처의 주요 부분 인 SPA 애플리케이션을 개발 중입니다.클라이언트 쪽에서 방해받지 않는 JavaScript 해킹에 대한 피드백
우리는 또한 버튼 그룹 [1]이있는 트위터 부트 스트랩 맛이 있습니다. 그래서 html에는 체크 박스 나 라디오처럼 작동하는 버튼이 있습니다.
투명 I 코드의 다음 부분을 해킹 [2] Backbone.ModelBinder의 사용을 통해 이러한 버튼을 포함하는 백본 뷰 백본 모델에 바인딩하기 위해 :# Twitter Bootstrap compatibility
addButtonGroupModelBindingSupport = ->
$(@el).one 'mousedown keydown', '.btn-group[data-toggle="buttons-radio"] button', ->
$(@).closest('.btn-group').find('button').prop 'type', 'radio'
installTwitterBootstrapModelBindingSupport = ->
backboneView = Backbone.View
ButtonGroupModelBinderSupportView = Backbone.View.extend
constructor: ->
backboneView.apply @, arguments
addButtonGroupModelBindingSupport.call @
return
Backbone.View = ButtonGroupModelBinderSupportView
installTwitterBootstrapModelBindingSupport()
이 코드 모듈 내부에 이 모델은 ModelBinder를 내 보내서 한 번만 실행됩니다. Backbone.View에서 필요한 동작을 혼합하여 본질적인 JavaScript가 방해받지 않는 방식으로 주입됩니다.
그래서 나는 버튼에 더 이상 버튼이 아니라고 말하고 있습니다. 지금까지 내가 크롬 파이어 폭스와 IE에게 말할 수있는 것은 괜찮습니다.
Fooled, ModelBinder는 해당 버튼을 확인란이나 라디오로 적절하게 처리하므로 모든 것이 필요에 따라 작동합니다.
이 해킹이 너무 까다로운 경우 더 많은 숙련 된 프런트 엔드 개발자의 의견을 듣는 것이 좋습니다.
[1]
http://twitter.github.com/bootstrap/components.html#buttonGroups [2] https://github.com/theironcook/Backbone.ModelBinder
나는 약간 위선적 인 말을한다. (위선적 인 말로는 내가 좋아하거나 좋아할만큼 말할만한 stackoverflow 웹 사이트를 방문하지 않는다.)하지만 이것은 http://codereview.stackexchange.com에서 더 나을 것이다. – JayC
지적 해 주셔서 감사합니다. – rafanoronha