Select Ember.js选择查看帮助程序选择绑定不工作
这是我在stackoverflow上的第一篇帖子,如果我没有包含所有应该包含的信息,请不要对我太苛刻 因此,我开始使用Ember.js来重新处理我们的UI,并尝试将“选择视图”帮助程序添加到编辑页面。该页面上使用了4个模型对象,这些对象在控制器上为编辑管线中的编辑页面设置。第一个模型(调查)包含主要调查数据。其他3个模型包含页面上3个下拉列表中选项的数据。 测量模型包含3个选择控件中每个控件的选定值的存储。 我的问题是,当我从显示所有调查的列表页面中选择要编辑的调查时,下拉列表不会显示当前值。然后,当我选择一个值并保存更改时,列表视图将所选值显示为对象,而不是名称。例如,代替“全部”。然后,当我选择要编辑的相同测量时,会在下拉列表中显示正确的选定值。所以它有点工作,但我似乎无法让它绑定到名称上,以便在列表中显示正确的值 我将包含尽可能多的代码,以显示如何配置中的数据。 我正在使用Ember Cli和Ember数据 这是编辑路线Select Ember.js选择查看帮助程序选择绑定不工作,select,ember.js,view-helpers,Select,Ember.js,View Helpers,这是我在stackoverflow上的第一篇帖子,如果我没有包含所有应该包含的信息,请不要对我太苛刻 因此,我开始使用Ember.js来重新处理我们的UI,并尝试将“选择视图”帮助程序添加到编辑页面。该页面上使用了4个模型对象,这些对象在控制器上为编辑管线中的编辑页面设置。第一个模型(调查)包含主要调查数据。其他3个模型包含页面上3个下拉列表中选项的数据。 测量模型包含3个选择控件中每个控件的选定值的存储。 我的问题是,当我从显示所有调查的列表页面中选择要编辑的调查时,下拉列表不会显示当前值。然
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
}}