小编Ben*_*Ben的帖子

迭代Ember.js余烬数据记录数组

我整天都在反对这个问题,我觉得我已接近解决方案,但却无法实现.我正在使用Ember.js和Ember-Data以及Fixtures适配器,最终迁移到REST适配器.基本问题是:我有网站和主管,有多对多的关系.我想向用户显示他们现有站点/主管配对的选择框,按站点排序,即:

  • 网站1 - 主管1
  • 网站1 - 主管2
  • 站点2 - 主管1 (记住,多对多)
  • 第2站 - 主管3

我需要将这两个资源争用到一个数组中,我可以将其传递给从Ember.Select继承(或将继承)的视图.目前我正在尝试使用Supervisors控制器上的一个方法,我称之为"平坦",因为它将返回一个表示这些关系的扁平数组.控制器如下所示.我正在使用.find().then()来处理承诺完成后的数据.我得到的数据似乎包含我的所有四个灯具,但是当我尝试它们的任何可枚举方法时(特别是forEach),它的行为就像它只返回了第一个对象一样.我试过迭代数据对象以及data.get('content').我对Ember很新,所以也许我不管怎么说这都是错的,但无论如何这对我来说似乎很奇怪.这是我的代码:

App.SupervisorsController = Ember.ArrayController.extend({
  flat: function(){
    return App.Supervisor.find().then(function(data){
      var c = data.get('content') ;
      console.log(c) ;    // <-- logs an object containing four records,
                          //     with attribute "length" showing 4
                          //     Great! (see below for log output)

      console.log(c[0]) ; // <-- logs first record. Great!
      console.log(c[1]) ; // <-- undefined (?!)
      console.log(c[2]) ; // <-- undefined (?!)
      console.log(c[3]) ; // <-- undefined (?!) …
Run Code Online (Sandbox Code Playgroud)

javascript ember.js ember-data

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

使用`module`作为命名空间

我一直在我的node.js模块中使用一个模式,这对我来说是显而易见的,我认为它一定有问题,或者我会看到更多的人这样做.为了保留模块全局的私有变量,我只需将它们作为属性附加到模块对象上.像这样:

module.exports = {

  init: function() {
    module.someClient = initializeSomethingHere()
  },

  someMethod: function(done) {
    module.someClient.doSomething(done)
  }
}
Run Code Online (Sandbox Code Playgroud)

这似乎比我这样的东西更好......

var someClient;

module.exports = {
  init: function() {
    someClient = initializeSomethingHere()
  },

  someMethod: function(done) {
    someClient.doSomething(done)
  }
}
Run Code Online (Sandbox Code Playgroud)

...因为在第二个示例中,您需要var someClient在文件顶部进行搜索,以确保varinit方法中故意省略关键字.我从未见过这种模式在其他地方使用过,所以我想知道我是否遗漏了一些不太理想的东西.

思考?

javascript node.js

5
推荐指数
1
解决办法
66
查看次数

标签 统计

javascript ×2

ember-data ×1

ember.js ×1

node.js ×1