我总是使用计数器来检查i==0循环中的第一个项目():
i = 0
my_array.each do |item|
if i==0
# do something with the first item
end
# common stuff
i += 1
end
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点(也许是一种方法)?
例如,给出了输入
day = 'Monday'
Run Code Online (Sandbox Code Playgroud)
我该如何计算日期day?
def date_of_next(day)
...
end
Run Code Online (Sandbox Code Playgroud) 我有一个项目列表:
<ul>
{{#each applications}}
<li>
<a {{bindAttr href="url"}}
{{action "appClicked" on="click"}}>
{{name}}
</a>
</li>
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)
点击它会调用appClicked该模板所属的视图方法.我想将一些信息(例如,应用程序的名称)传递给方法appClicked.像,{{action "appClicked(name)" on="click"}}.
有可能,怎么样?
这可能不容易,但我很难弄清楚如何访问父视图的属性:
App.ParentView = Ember.View.extend({
foo: 'bar',
child_view: Ember.View.extend({
init: function(){
// get the value of App.ParentView.foo
// ???
}
})
});
Run Code Online (Sandbox Code Playgroud) 关于新的Ember.js路由系统(在此描述),如果我理解正确,当您退出路由时视图将被销毁.
有没有办法在退出路径时绕过视图的销毁,以便在用户重新进入路径时保留视图的状态?
更新:看起来,除非在新路线中更换插座视图,否则不会销毁视图.例如,如果您在某个{{outlet master}}中使用ViewA的stateA,并且您使用{{outlet master}}中的ViewB转到stateB,则ViewB将取代ViewA.解决这个问题的方法是在需要保留视图时定义多个出口,例如{{outlet master1}},{{outlet master2}},...
一个很好的功能是能够将一组视图传递到插座.并且还可以选择在退出路线时是否会销毁视图或隐藏视图.
任何人对如何实现同时使用localStorage和REST远程存储的数据持久层有任何想法或参考:
某个客户端的数据与localStorage一起存储(使用ember-data indexedDB适配器).本地存储的数据与远程服务器同步(使用ember-data RESTadapter).
服务器从客户端收集所有数据.使用数学集符号:
Server = Client1 ? Client2 ? ... ? ClientN
Run Code Online (Sandbox Code Playgroud)
通常,任何记录对某个客户来说可能不是唯一的:
ClientX ? ClientY ? 0, ? X,Y ? [1,N]
Run Code Online (Sandbox Code Playgroud)
以下是一些场景:
客户创建记录.无法在客户端上设置记录的ID,因为它可能与存储在服务器上的记录冲突.因此,需要将新创建的记录提交到服务器 - >接收id - >在localStorage中创建记录.
记录在服务器上更新,因此localStorage和服务器中的数据不同步.只有服务器知道,所以架构需要实现推送架构(?)
您是否会使用2个存储(一个用于localStorage,一个用于REST)并在它们之间同步,或者使用混合索引的DB2/REST适配器并在适配器中写入同步代码?
你能看到任何避免实现推送的方法(Web Sockets,...)?
我有一组动画,我可以在Canvas(fabric.js)或WebGL(three.js)中制作.我需要在服务器端自动记录它们,并通过脚本输出视频文件.
动画包括:
在过去的几个月里,我对此进行了很多研究.
结果
1. 使用PhantomJS + FFMPEG
在无头浏览器(PhantomJS)上运行HTML Canvas动画并使用FFMPEG进行录制.这里的问题是PhantomJS既不支持WebGL也不支持Video元素. http://phantomjs.org/supported-web-standards.html
2. 使用Websockets使用DataURL将数据发送回服务器
再次,我们需要在浏览器上运行动画(我们不能这样做,因为我们必须这样做服务器上的一切).
3. 使用node-canvas
这是TJ Holowaychuk的一个库,它允许在Node.js上呈现HTML Canvas.但它有其自身的局限性,而且我还没有真正探索过这个领域.(如果有人可以更多地了解这个图书馆)
如果有人以前做过或者可以指导我有用的地方.
我们需要做的就是使用一些数据来创建动画并将其记录到视频中,服务器端的所有内容.
我知道如何从DOM中的Ember视图构造一个jQuery对象:
App.myView = Ember.View.extend({
elementId: "my_view",
didInsertElement: function(){
console.log(this.$().attr('id')) // outputs 'my_view'
}
});
<!-- HTML output -->
<div id="my_view">
<!-- ... -->
</div>
Run Code Online (Sandbox Code Playgroud)
做反过来怎么样.给定一个jQuery对象,如何获取相应的Ember View对象.
function(selector){
$el = $(selector);
// ???
}
Run Code Online (Sandbox Code Playgroud) 使用ember-data,我正在加载模型的所有记录:
App.adapter = DS.Adapter.create({
findAll: function(store, type) {
var url = type.url;
jQuery.getJSON(url, function(data) {
var ids = data.map(function(item, index, self){ return item.id });
store.loadMany(type, ids, data);
});
}
});
Run Code Online (Sandbox Code Playgroud)
didLoad当每个记录完成加载时调用该方法.所有记录完成加载后是否有方法调用?
编辑
模型:
App.Article = DS.Model.extend({
title: DS.attr('string'),
content: DS.attr('string'),
checkIsLoaded: function() {
if (this.get('isLoaded')){
console.log('loaded!'); // outputs `loaded` for each record
}
}.observes('isLoaded')
});
Run Code Online (Sandbox Code Playgroud) 考虑一个定义对象列表的视图:
App.ListView = Ember.View({
items: 'App.FooController.content'
itemClicked: function(item){
}
)};
Run Code Online (Sandbox Code Playgroud)
使用模板:
<ul>
{{#each items}}
{{#view App.ItemView itemBinding="this" tagName="li"}}
<!-- ... -->
{{/view}}
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)
和ItemView:
App.ItemView = Ember.View.extend({
click: function(event){
var item = this.get('item');
// I want to call function itemClicked(item) of parentView
// so that it handles the click event
}
})
Run Code Online (Sandbox Code Playgroud)
所以基本上我的问题是如何将事件传递给父视图,尤其是在子视图不知道父视图的情况下?据我所知,你可以得到一个属性foo一个parentView与任一this.getPath('parentView').get('foo')或this.getPath('contentView').get('foo').但是一个函数呢(在这种情况下itemclicked())?
ember.js ×7
ember-data ×2
ruby ×2
date ×1
ffmpeg ×1
javascript ×1
jquery ×1
node-canvas ×1
node.js ×1
phantomjs ×1
rest ×1
three.js ×1