我正在尝试使用现在使用 zepto 框架的 emberjs 和基础 4,但一旦我将 emberjs 包含到我的 application.js 中,基础代码就停止工作。包含的顺序有问题吗?

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require events
//= require foundation
//= require rails.validations
//= require rails
//= require gmaps4rails/gmaps4rails.base
//= require gmaps4rails/gmaps4rails.googlemaps

//= require handlebars
//= require ember
//= require ember-data
//= require teammngt

//= require_self
TeamMngt = Ember.Application.create();
$(document).foundation();

最佳答案

TL; 博士

TeamMngt = Ember.Application.create({
  ready: function() {
    Ember.run.next(this, function(){
      $(document).foundation();
    });
  }
});

或者

创建应用程序后添加:
TeamMngt.ApplicationView = Ember.View.extend({
  didInsertElement: function() {
    Ember.run.next(this, function(){
      $(document).foundation();
    })
  }
});

注意: 将 TeamMngt 更改为您设置的任何 = Ember.Application.create();
一些解释:

加载应用程序模板后,将触发 didInsertElement 事件。但是将 $(document).foundation() 单独放在那里是行不通的(我猜是加载/绑定(bind)的方式或其他方式)。所以我做了:
didInsertElement: function() {
  setTimeout(function() {
    $(document).foundation();
  }, 0);
}

使用 0ms 的 setTimeout() 似乎很奇怪,所以我认为有更好的方法。因此,导致将 $(document).foundation() 放入 Ember.run.next()

致谢: Zaxnyd
引用: Ember.js Ember.View didRender event

关于ruby-on-rails - emberjs 和基础 4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15861140/

10-13 06:13