我尝试将数据上下文传递给延迟对象,以便在执行函数后修改数据:
function confirmBox(obj){
var defer = $.Deferred();
//cut the function
//if true, it will returned the obj, by false it will be defer.reject()
defer.resolve(obj);
return defer.promise();
}
$.link.testTemplate("#main", app)
.on("click", ".test-item", function(e){
confirmBox($.view(this)).then(function (answer) {
console.log(answer.getIndex())
});
//console.log($.view(this).getIndex()) => working fine
})
它返回了一个未定义的值。
我的错误在哪里?
答案 0 :(得分:0)
view.getIndex()
将返回undefined。
http://www.jsviews.com/#getindex
http://www.jsviews.com/#viewobject@index
因此,如果您的'test-item'元素不在{^{for someArray}}
索引中,则将是未定义的。
当'test-item'在项目视图中时,您的示例可以正常使用...
否则,您可以将完整的示例发布到jsfiddle ...