2012-03-20 74 views
0

看起来好像不可能延迟模板的加载,直到响应从Ember视图的willInsertElement属性中的AJAX请求返回为止?延迟加载Ember视图模板直至完成AJAX请求

我想在模板呈现之前加载jquery-ui.min.js。

window.App = Ember.Application.create() 

App.TestView = Ember.View.create 
    tagName: 'div' 
    template: Ember.Handlebars.compile '<div>This is a view</div>' 
    willInsertElement: -> 
     $.ajax({ 
     url: "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js" 
     dataType: "script" 
     async: false 
     success: (data, textStatus, jqxhr) -> 
      console.log data 
      console.log textStatus 
      console.log jqxhr.status 
      console.log "Load was performed." 
     }); 
    didInsertElement: -> 
     console.log 'the element was inserted' 

App.TestView.append() 

我发现didInsertElement在AJAX请求完成之前运行。

谢谢先进。

回答

2

你想要什么到底要实现文件上传?确保在插入视图之前jquery-ui可用?

  • 你可以附加在success回调你的看法,然后,看到http://jsfiddle.net/RgcJA/
  • 我没有测试你的代码,但$.getScript异步执行?你有没有试过设置async: false
+0

我改变了这个问题,使用$ .ajax作为$ .getScript只是一个更高级别的抽象。我只是尝试设置aync:false并且不起作用。但我相信你是正确的,我可能需要在成功回调中追加视图。 – Rocky 2012-03-21 16:43:19

0

您可以尝试将视图的可见属性绑定到变量,然后在文件上载完成时切换该变量。

你也将不得不开始外willInsertElement