Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery mobile 如果我们在websql事务内部进行渲染,backbonejs jquery移动视图渲染就会出错_Jquery Mobile_Backbone.js_Backbone Views - Fatal编程技术网

Jquery mobile 如果我们在websql事务内部进行渲染,backbonejs jquery移动视图渲染就会出错

Jquery mobile 如果我们在websql事务内部进行渲染,backbonejs jquery移动视图渲染就会出错,jquery-mobile,backbone.js,backbone-views,Jquery Mobile,Backbone.js,Backbone Views,各位, 考虑下面的咖啡脚本: window.Aview = class AView extends Backbone.View getT: (callback) => callback() getTransactions: (callback) => @getT( => callback() ) render: => @getTransactions( (results) =>

各位, 考虑下面的咖啡脚本:

window.Aview = class AView extends Backbone.View

  getT: (callback) =>
    callback()

  getTransactions: (callback) =>
    @getT( =>
      callback()
    )            
  render: =>
   @getTransactions(
     (results) =>
       $(@el).html(@template({}))
   )
这将按预期呈现(如下所示):

但是,如果我将getTransactions中的逻辑更改为使用window.db.transaction(window.db指向websql db变量),如下所示:

  getTransactions: (callback) =>
    window.db.transaction( =>
      callback()
    )          
然后渲染会出错,如下所示:

我不知道为什么会这样。我认为这很可能不是使用backbonejs的方式,但我很好奇,当我使用window.db.transaction而不是本地定义的getT方法时,为什么jquery mobile选项卡的呈现会出错


谢谢你的帮助

我解决了这个问题。正如我所怀疑的那样,我在多个层面上都做错了。这里的目标是呈现来自websql数据库的数据。问题是数据库数据是通过回调异步返回的。您的视图需要“等待”数据完成。正确的方法是

  • 使用jquery延迟(见文章)
  • 在backbonejs视图的呈现方法中-使用常规主干js呈现机制呈现没有数据的页面
  • 使用jquery promise接口呈现动态内容(查询异步返回的数据): txnsLoadedPromise.then( //在这里渲染动态内容 )
  • 调用触发器create以应用jquery增强功能(请参阅 ) 我之所以搞砸UI,是因为jquery增强需要以编程方式应用于动态DOM元素