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