Backbone.js 为什么我的模型没有定义?
我的模型有些问题。当我去保存状态时,我得到 未捕获的TypeError:无法调用未定义的方法“get” 有人有什么想法吗?我对主干网非常陌生,甚至对咖啡脚本也比较陌生Backbone.js 为什么我的模型没有定义?,backbone.js,coffeescript,Backbone.js,Coffeescript,我的模型有些问题。当我去保存状态时,我得到 未捕获的TypeError:无法调用未定义的方法“get” 有人有什么想法吗?我对主干网非常陌生,甚至对咖啡脚本也比较陌生 View = require 'views/base/view' module.exports= class TaskView extends View autoRender: true eventSounder:false taskRemoveTimeout:500 completeTask:(e)=>
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
我不太熟悉coffeescript语法,但它看起来像您的
@model.get('status')
没有使用正确的this
。要解决此问题,请尝试使用以下方法(但将其转换为coffeescript):
相信我们找到了问题所在 当toggleStatus更改状态或其他内容时,模型上的其他位置可能有一个侦听器。当模型更改(特别是状态)时,它将被销毁。因此,当completeTask继续运行时,模型在该点上已被破坏
谢谢大家的帮助:)。如果您需要更多信息,请告诉我。我不知道我在做什么:)@tieTYT-这里是这行:状态:@model.get('status')#error@muistooshort-我在我认为调用completeTask的地方添加了toggleStatus模型事件。是否需要在model.save后加括号?或者,您是否将模型传递给视图?如果我这样做,它似乎无法编译。
// Before @model.save
var status = this.model.get('status');
this.model.save ({
status: status
});