0

私のモデルに問題があります。ステータスを保存すると、

キャッチされていない TypeError: 未定義のメソッド 'get' を呼び出せません

誰にもアイデアはありますか?私は Backbone の初心者で、Coffeescript の初心者です。

View = require 'views/base/view'
module.exports= class TaskView extends View
  autoRender: true
  eventSounder:false
  taskRemoveTimeout:500

  completeTask:(e)=>
    e.preventDefault() if e
    e.stopPropagation() if e
    @toggleStatus()
    @model.save {
      status: @model.get('status') # error
    }, {
      success: =>
        unless @removeTaskTimeout
          @removeTaskTimeout = setTimeout(@removeTaskItem, @taskRemoveTimeout)
    }

  toggleStatus: =>
    if @model.get('status') is 'OPEN'
      if @removeTaskTimeout
        clearTimeout @removeTaskTimeout
        @removeTaskTimeout = null
      @model.set('status', 'CLOSED')
    else if @model.get('status') is 'CLOSED'
      @model.set('status', 'OPEN')

  removeTaskItem: =>
    if @model.get('status') is 'CLOSED'
      @eventSounder = true
      @datastore.userTasks.remove @model
      @model?.collection?.remove @model
      console.log @model

  getTemplateData: =>
    td = super
    td.completeClass = "complete" if @model.isComplete?()
    td.assignedBy = @datastore.dimensionUsers.getUserName(@model.get('assigner'))
    if !td.assignedBy
      td.assignedBy = "Dimension User Not Found"
    td

アップデート:

以下は、completeTask を呼び出すイベントを含むビューです。

View = require 'views/base/task'
template = require 'views/templates/fanview/right/task_carousel_item'

module.exports = class TaskCarouselItem extends View
  template: template
  template = null
  className: 'item'

  listen:
    'change model' : 'render'
    'toggleStatus model' : 'completeTask'

  attach: ->
    super
    id = @model.id
    @$el.data('id', id)
    @publishEvent 'taskCarousel:status:update'

  initialize: ->
    super
    console.log 'Initialize', @model
4

2 に答える 2