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

时间:2018-03-01 22:48:25

标签: jquery deferred jsrender

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

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

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

我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

如果上下文(视图)不是“项目”视图,或者在项目视图中,

view.getIndex()将返回undefined。

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

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

当'test-item'在项目视图中时,您的示例可以正常使用...

否则,您可以将完整的示例发布到jsfiddle ...