emberjs 和 Foundation4

Posted

技术标签:

【中文标题】emberjs 和 Foundation4【英文标题】:emberjs and foundation4 【发布时间】:2013-03-29 11:23:42 【问题描述】:

我正在尝试使用现在正在使用 zepto 框架的 emberjs 和 Foundation 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();

【问题讨论】:

需求的顺序有可能真的很重要。您可以重新订购您的application.js 并告诉我们结果,这会很有趣。 code stops working???..可能会抛出错误..您可以在此处从控制台发布堆栈跟踪或错误... 根据我计算出的应用程序生成的文件 TeamMNGT 由 ember 制作,其中包含更多内容,但我还没有弄清楚究竟是哪些问题 还有其他人成功让这两个玩得很好吗? 我正在使用这两种方法。您可以指定基础使用 jquery 而不是 zepto。 【参考方案1】:

TL;DR

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() 放置在那里是行不通的(我猜事物的加载/绑定方式或其他方式)。所以我做了:

didInsertElement: function() 
  setTimeout(function() 
    $(document).foundation();
  , 0);

有一个 0ms 的 setTimeout() 看起来很奇怪,所以我想有一个更好的方法。因此,导致将$(document).foundation() 放入Ember.run.next()


致谢: Zaxnyd参考: Ember.js Ember.View didRender event

【讨论】:

发现这个结合起来很有用:***.com/a/18072264/1396904

以上是关于emberjs 和 Foundation4的主要内容,如果未能解决你的问题,请参考以下文章

Emberjs - 一起使用 CollectionView 和 ItemController

Emberjs + Handlebars + Object onchange 和事件

如何在 EmberJS 验收测试中调用输入和按钮?

在同一服务器和端口上运行 EmberJS 和 Django

emberjs 基金会 5 手风琴

emberjs中渲染和视图关键字的区别?