小编Pan*_*agi的帖子

如何在Ruby循环中的第一次迭代中采取不同的行为?

我总是使用计数器来检查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)

有没有更优雅的方法来做到这一点(也许是一种方法)?

ruby

72
推荐指数
2
解决办法
3万
查看次数

37
推荐指数
7
解决办法
2万
查看次数

如何使用Ember.js的动作Helper传递参数?

我有一个项目列表:

  <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"}}.

有可能,怎么样?

javascript handlebars.js ember.js

19
推荐指数
3
解决办法
3万
查看次数

如何获得Ember的父View属性?

这可能不容易,但我很难弄清楚如何访问父视图的属性:

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

17
推荐指数
1
解决办法
1万
查看次数

如何*不*在退出Ember.js中的路线时销毁View

关于新的Ember.js路由系统(在此描述),如果我理解正确,当您退出路由时视图将被销毁.

有没有办法在退出路径时绕过视图的销毁,以便在用户重新进入路径时保留视图的状态?


更新:看起来,除非在新路线中更换插座视图,否则不会销毁视图.例如,如果您在某个{{outlet master}}中使用ViewA的stateA,并且您使用{{outlet master}}中的ViewB转到stateB,则ViewB将取代ViewA.解决这个问题的方法是在需要保留视图时定义多个出口,例如{{outlet master1}},{{outlet master2}},...

一个很好的功能是能够将一组视图传递到插座.并且还可以选择在退出路线时是否会销毁视图或隐藏视图.

ember.js ember-old-router

13
推荐指数
1
解决办法
3253
查看次数

使用localStorage和REST远程服务器的数据层架构

任何人对如何实现同时使用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,...)?

rest data-synchronization ember.js ember-data

12
推荐指数
1
解决办法
2184
查看次数

将HTML Canvas/WebGL动画服务器端录制到视频中的最佳方法是什么?

我有一组动画,我可以在Canvas(fabric.js)或WebGL(three.js)中制作.我需要在服务器端自动记录它们,并通过脚本输出视频文件.

动画包括:

  1. 图片
  2. 视频(带音频)
  3. 其他动画/效果

在过去的几个月里,我对此进行了很多研究.

结果
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.但它有其自身的局限性,而且我还没有真正探索过这个领域.(如果有人可以更多地了解这个图书馆)

如果有人以前做过或者可以指导我有用的地方.
我们需要做的就是使用一些数据来创建动画并将其记录到视频中,服务器端的所有内容.

ffmpeg node.js three.js phantomjs node-canvas

12
推荐指数
1
解决办法
3361
查看次数

从jQuery对象获取Ember View

我知道如何从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)

jquery ember.js

9
推荐指数
1
解决办法
5984
查看次数

findAll完成加载所有记录时的Ember-Data回调

使用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)

ember.js ember-data

8
推荐指数
1
解决办法
4691
查看次数

如何将事件传递给父视图,传递触发事件的子视图?

考虑一个定义对象列表的视图:

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
推荐指数
1
解决办法
3976
查看次数