【问题标题】:Ember.js: How to observe whether template DOM element has been renderedEmber.js:如何观察模板 DOM 元素是否已经渲染
【发布时间】:2015-04-13 21:09:07
【问题描述】:

我有一个控制器,可以将异步数据加载到 Ember 主存储中。
在加载时,它会显示一个加载微调器。加载完成后会显示数据。

我的问题是我还想在加载数据并渲染模板后注入 jQuery 逻辑/绑定。

问题是:当模板被渲染/更新时会调用什么钩子?

我尝试观察何时加载数据,但在模板渲染后它不能可靠地注入 jQuery(见下文):

controllers/index.js

export default Ember.Controller.extend({
    listReady: function() {
       Ember.run.next(this, function() {
       // jQuery logic
        })

    }.observes('model.stations.content.isLoaded'),
})

routes/index.js

export default Ember.Route.extend({
    setupController: function(controller, model) {
        var that = this;
        controller.set('content', {
            stations: that.store.find('station'),
            others: that.store.find('other')
        }); 
    }
});

templates/index.js

{{#if model.stations.content.isLoaded}}
{{!--display the data--}}
{{else}}
{{!--display a loading spinner--}}
{{/if}}

【问题讨论】:

    标签: jquery templates ember.js controller


    【解决方案1】:

    有两件事 - 路径中的模型挂钩前和模型后挂钩。 如果您想在数据加载到模型对象后执行某些操作,则可以使用 aftermodel 钩子。

    您可以在此处阅读有关这些钩子的更多信息 - http://guides.emberjs.com/v1.10.0/routing/asynchronous-routing/

    对于加载微调器的事情 - 您不需要在处理程序栏(模板)中显式编写逻辑,您可以在路由中执行此操作。 Ember 仅提供加载路径。您可以参考以下链接了解更多信息

    http://guides.emberjs.com/v1.10.0/routing/loading-and-error-substates/

    【讨论】:

    • 感谢您的回答,Neha,但我不想使用模型挂钩,因为我的模型是异步的,而且非常大,我不希望用户看到空白屏幕在他们加载的时候。这就是为什么我在路由的 setupController 钩子中声明它们。 guides.emberjs.com/v1.10.0/routing/specifying-a-routes-model/…
    • 如果我理解正确,那么您的要求就是向用户显示一些忙碌的光标,直到您的操作完成。如果是这种情况,那么您可以使用加载路线来显示繁忙的光标。您不需要在模板中编写任何逻辑。如果您想采用“Ember 方式”,那么模板中不应存在逻辑,模板仅用于 UI 部分。 Ember 提供了加载过程的默认实现,它实现了加载子状态。检查网站上给出的示例guides.emberjs.com/v1.10.0/routing/loading-and-error-substates
    • 那么,如果我将多个模型加载到一个路由(管理路由)中怎么办。每个模型填充页面上的某个位置。除了加载光标外,我是否必须完全复制该模板,或者有什么方法可以切换视图,或使用多个插座或其他什么?
    • 是的,您可以使用多个视图/插座。你可以参考这个问题,这将回答你的问题 - stackoverflow.com/questions/17837128/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多