Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
Select Ember.js选择查看帮助程序选择绑定不工作_Select_Ember.js_View Helpers - Fatal编程技术网

Select Ember.js选择查看帮助程序选择绑定不工作

Select Ember.js选择查看帮助程序选择绑定不工作,select,ember.js,view-helpers,Select,Ember.js,View Helpers,这是我在stackoverflow上的第一篇帖子,如果我没有包含所有应该包含的信息,请不要对我太苛刻 因此,我开始使用Ember.js来重新处理我们的UI,并尝试将“选择视图”帮助程序添加到编辑页面。该页面上使用了4个模型对象,这些对象在控制器上为编辑管线中的编辑页面设置。第一个模型(调查)包含主要调查数据。其他3个模型包含页面上3个下拉列表中选项的数据。 测量模型包含3个选择控件中每个控件的选定值的存储。 我的问题是,当我从显示所有调查的列表页面中选择要编辑的调查时,下拉列表不会显示当前值。然

这是我在stackoverflow上的第一篇帖子,如果我没有包含所有应该包含的信息,请不要对我太苛刻

因此,我开始使用Ember.js来重新处理我们的UI,并尝试将“选择视图”帮助程序添加到编辑页面。该页面上使用了4个模型对象,这些对象在控制器上为编辑管线中的编辑页面设置。第一个模型(调查)包含主要调查数据。其他3个模型包含页面上3个下拉列表中选项的数据。 测量模型包含3个选择控件中每个控件的选定值的存储。 我的问题是,当我从显示所有调查的列表页面中选择要编辑的调查时,下拉列表不会显示当前值。然后,当我选择一个值并保存更改时,列表视图将所选值显示为对象,而不是名称。例如,代替“全部”。然后,当我选择要编辑的相同测量时,会在下拉列表中显示正确的选定值。所以它有点工作,但我似乎无法让它绑定到名称上,以便在列表中显示正确的值

我将包含尽可能多的代码,以显示如何配置中的数据。 我正在使用Ember Cli和Ember数据

这是编辑路线

import Ember from 'ember';

export default Ember.Route.extend({

model: function (param) {
var _this = this;
var surveyId = param.id;

return Ember.RSVP.hash({
    survey: _this.store.find('survey', surveyId),
    jobStats: _this.store.find('job-stat'),
    completionStages: _this.store.find('completion-stage'),
    surveyNames: _this.store.find('survey-name')
});
},

  setupController: function (controller, model) {

  controller.set('survey', model.survey);
  controller.set('jobStats', model.jobStats);
  controller.set('completionStages', model.completionStages);
  controller.set('surveyNames', model.surveyNames);

}
});
这是调查模型

import DS from 'ember-data';

export default DS.Model.extend({

    name: DS.attr(),
    jobStatus: DS.attr(),
    surveyStatus: DS.attr(),
    .....
});
这是作业统计模型

import DS from 'ember-data';

export default DS.Model.extend({
  name:   DS.attr()
});
下面是显示“选择”组件的把手模板的一部分

<div class="control-group span12">
     <label class="control-label">Job Status:</label>
     {{view "select" class="span3"
            contentBinding="jobStats"
            optionValuePath="content.id"
            optionLabelPath="content.name"
            selectionBinding="survey.jobStatus"
     }}
 </div>
我假设来自job stat模型的name属性将保存在调查模型的jobStatus属性中。显示编辑页面时,未选择正确的选项。当我选择一个值然后保存时,列表中显示的是对象。当我再次编辑项目时,正确的选项显示为选中。似乎我对绑定的定义不正确,但我不确定如何使其工作。 我曾尝试对id使用绑定,但这只会导致列表显示id而不是名称

我正在使用假装器来支持API调用,它有所有模型的测试数据。这是调查数据和工作统计数据

var surveys = [
   {
     id: 1,
     name: 'Gas Survey',
     jobStatus: 'Newly Created',
     ....
  }
];


var jobStats = [
  {
   id: 1,
   name: '[all]'
  },
  {
    id: 2,
    name: 'Newly Created'
  },
  {
    id: 3,
    name: 'Make First App'
  },
  {
    id: 4,
    name: 'Gas Waiting First Appointment'
  }
];

请任何人帮忙。我搜索了internet,试图找到一个与我的配置匹配的工作示例,但大多数示例要么不使用余烬数据,要么使用控制器中定义的静态数据。

您应该使用
值,而不是
选择绑定
,如下所示:

 {{view "select" class="span3"
        content=statuses
        optionValuePath="content.id"
        optionLabelPath="content.name"
        value=survey.jobStatus
 }}
查看正在运行的演示


另外,将要保存的不是
name
属性,而是
id
属性,因为这对于数据的规范化可能更好,不是吗?

这是一个写得很好的问题,但是如果您用代码创建了一个jsbin/jsfiddle/codepen,我想会有更多的人热衷于解决你的问题!:)我带着同样的问题来到这里,很快就找到了答案。非常感谢。
 {{view "select" class="span3"
        content=statuses
        optionValuePath="content.id"
        optionLabelPath="content.name"
        value=survey.jobStatus
 }}