Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 控制器负载上的余烬负载值_Javascript_Ember.js_Ember Data - Fatal编程技术网

Javascript 控制器负载上的余烬负载值

Javascript 控制器负载上的余烬负载值,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我正在尝试加载一个类型数组,用作选择值。可以使用addSelect操作创建多个选择。下面是我加载数据的方式 genreStrings: function() { var array = []; this.store.findAll("genre").then(function(genres){ genres.forEach(function(genre){ array.push(genre.get('combinedName'));

我正在尝试加载一个类型数组,用作选择值。可以使用addSelect操作创建多个选择。下面是我加载数据的方式

genreStrings: function() {
    var array = [];
    this.store.findAll("genre").then(function(genres){
        genres.forEach(function(genre){
            array.push(genre.get('combinedName'));
        });
    });
    return array;
}.property(),
然后像这样在模板中使用它

{{view "select" content=genreStrings value=genre.name prompt="Select a Genre" }}
我面临的问题是,当页面加载时加载的第一个select没有值,而使用addSelect操作添加的每个后续select都具有预期的值

我已经试过了。在'init'上,但仍然不起作用


如何为第一次选择设置这些值?

第一次,数组是空的,因为您使用异步方式加载数据。解决方案可能是创建一个更新“类型”字段的方法:

此外,我还添加了Ember.computed.map,用于将流派转换为所需格式。您仍然可以使用ES5样式:

  genreStrings: function() {
    return this.get('genres').map(function(genre) {
      return genre.get('combinedName');
    });
  }).property('genres'), 
编辑:

如果要以更大的余烬方式执行此操作,可以将其移动到管线的模型挂钩:

model: function() {
  return this.store.findAll("genre");
}

然后,如果您返回承诺,整个路由将等待您的数据被提取,并且在您的控制器中,您将在model属性中拥有它。

这是可行的,但是在路由中加载数据可能更容易。
model: function() {
  return this.store.findAll("genre");
}