JSView 将上下文传递给延迟对象

JSView passing context to deferred object

我尝试将数据上下文传递给延迟对象以在执行函数后修改数据:

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
  })

它返回了一个未定义的值。

我的错误在哪里?

view.getIndex() 如果上下文(视图)不是 'item' 视图或在项目视图中,则 return 未定义。

http://www.jsviews.com/#getindex
http://www.jsviews.com/#viewobject@index

因此,如果您的 'test-item' 元素不在 {^{for someArray}} 索引中,则将是未定义的。

当 'test-item' 在项目视图中时,您的示例对我来说工作正常...

否则,你能post一个jsfiddle的完整例子吗...