下面的代码令我不安:
define('TodoItem', function()
{
var Component = require('Component')
var app = require('application').app
var merge = $.extend
var TodoItem = Component.extend(
{
template : 'todo-item-template',
events :
{
'button.completed click' : 'markAsCompleted',
'button.delete click' : 'remove'
},
getInitialState : function()
{
var initial =
{
uuid : undefined,
text : '',
completed : false
}
return initial
},
markAsCompleted : function(evt)
{
if (this.root)
{
var test = merge({}, this.getInitialState(), { whatever : 'whatever' })
app.completeTodo(this.model.uuid)
}
}
}
}
当markAsCompleted()
被执行时,merge
被调用而没有意外,但不知何故,对app.completeTodo()
的调用会引发Uncaught TypeError: Cannot read property 'completeTodo' of undefined
(并且app确实是{{1} }})。
undefined
是对象的引用,其值改变的唯一方法是在此期间引用的对象发生更改。然而app
仍然评估它应该对象。
这似乎是一个简单的JS问题,我误解了,但我无法理解。
提前感谢您的帮助!