トリガーが適切に反応するのに苦労しています。機能しているものはたくさんありますが、そのうちの 1 つが機能しておらず、その理由がわかりません。
これが私のAppControllerクラスです
class ProjectOrder.View.AppController extends Backbone.View
initialize: ->
@promptOfficeSearch()
promptOfficeSearch: ->
officeSearch = new ProjectOrder.View.OfficeSearch
officeSearch.on 'createOffice', @promptOfficeCreate
officeSearch.on 'createTicket', @promptTicketCreate
officeSearch.on 'accountAndTicketExist', @killProcessAccountExists
promptOfficeCreate: (serial) ->
@officeModel = new ProjectOrder.Model.OfficeModel()
@officeModel.set('serial_number', serial)
officeCreate = new ProjectOrder.View.OfficeCreator({model: @officeModel})
officeCreate.on 'createTicketOffAccount', @promptTicketCreate
promptTicketCreate: (model) ->
console.log 'promptTicketCreate'
model = model || @officeModel
ticketModel = new ProjectOrder.Model.TicketModel()
new ProjectOrder.View.TicketCreator({ticketModel: ticketModel, officeModel: model})
killProcessAccountExists: (ticket_id) ->
msg = document.createElement 'div'
msg.className = 'account-exists-msg'
msg.innerHTML = "Account already exists. Redirecting to ticket #{ticket_id}..."
$('#create-order-div').append(msg)
setTimeout((->
window.location = "/pto/#{ticket_id}"
), 2000)
promptOfficeSearch 関数の officeSearch オブジェクトからのすべてのトリガーが正しく機能します。それらはすべて、それぞれ次のようにトリガーされます。
@trigger 'createOffice', serial
@trigger 'createTicket', data.model[0]
@trigger 'accountAndTicketExist', data.model
しかし、promptOfficeCreate の officeCreate オブジェクトでは、OfficeCreator クラスの submitOffice ajax 成功コールバックに登録されている createTicketOffAccount イベントに応答しません。
class ProjectOrder.View.OfficeCreator extends Backbone.View
template: _.template($("#OfficeCreator").html())
id: 'office-creator'
events:
'click .submit' : 'submitOffice'
initialize: ->
@render()
render: ->
@$el.html(@template(@model.toJSON()))
$('#create-order-div').append(@$el)
submitOffice: ->
@setModelData()
@model.save(null,{
success: (model) =>
@trigger 'createTicketOffAccount', model
#@$el.remove()
error: ->
alert 'error'
})
setModelData: ->
@model.set({
office_name: $('#office').val()
doctor_name: $('#doctor').val()
emr: $('#has-emr').is(':checked')
forms_builder: $('#has-forms').is(':checked')
iehr: $('#has-iehr').is(':checked')
clipboard: $('#has-clip').is(':checked')
specialty_id: $('#specialty').val()
})
トリガーが機能しない理由はありますか?