将 Angular 正式 select 绑定到模型 属性 的选项
Binding Angular Formly select to a model property for its options
我正在处理旧版 Angular Formly 表单,我有一个 select formly-template 字段用于下拉列表:
<select class="form-control" placeholder="choose ..." ng-model="model[options.key]"
ng-options="option.value as option.name group by option.group for option in options.templateOptions.options">
</select>
不幸的是,我正在更新的应用程序有很多静态选项的示例,但我需要将其绑定到动态列表。
我已经设法添加了一个扩展 select 的新字段类型,并且正在尝试将 Desc 映射到名称并将代码映射到值,但它没有像我希望的那样工作。
formlyConfigProvider.setType({
name: 'specialselect',
templateUrl: getFieldTemplateUrl('select'),
wrapper: commonWrappers,
defaultOptions: {
defaultValue: "",
expressionProperties: {
'templateOptions.options': function ($viewValue, $modelValue, scope) {
if (!scope.model.SomeObject.ItemCollection) {
return [];
}
var defaultOption = [{ name: 'Choose ...', value: '' }];
return _.union(defaultOption, _.map(scope.model.SomeObject.ItemCollection, function (value) {
return { name: value.Desc, value: value.Code };
}));
}
}
}
});
忽略我在代码中修复的未定义,我的列表现在包含:
问题 1:我不确定为什么出于某种原因我在我的值中看到 string:JEEP 而不是 JEEP。
更新:所以我发现其他关于 Angular 的帖子正在做一些事情来创建一个唯一的键,这就是为什么它在值前面加上类型的前缀。但我不希望那样,因为我将不得不在保存我的对象之前将其删除。去除值类型的最有效方法是什么?或者是否有更好的方法来定义我的字段,使其不会出现这种行为。
问题 2:如何使此动态化以便我可以传入包含我的项目集合的模型 属性。而不是使用:
scope.model.SomeObject.ItemCollection
原来我可以忽略值前缀的类型。好像适当忽略了。
另外,对于我需要设置的 select 字段的动态列表绑定:
"expressionProperties": {
"templateOptions.options": "model.SomeObject.ItemCollection"
}
我正在处理旧版 Angular Formly 表单,我有一个 select formly-template 字段用于下拉列表:
<select class="form-control" placeholder="choose ..." ng-model="model[options.key]"
ng-options="option.value as option.name group by option.group for option in options.templateOptions.options">
</select>
不幸的是,我正在更新的应用程序有很多静态选项的示例,但我需要将其绑定到动态列表。
我已经设法添加了一个扩展 select 的新字段类型,并且正在尝试将 Desc 映射到名称并将代码映射到值,但它没有像我希望的那样工作。
formlyConfigProvider.setType({
name: 'specialselect',
templateUrl: getFieldTemplateUrl('select'),
wrapper: commonWrappers,
defaultOptions: {
defaultValue: "",
expressionProperties: {
'templateOptions.options': function ($viewValue, $modelValue, scope) {
if (!scope.model.SomeObject.ItemCollection) {
return [];
}
var defaultOption = [{ name: 'Choose ...', value: '' }];
return _.union(defaultOption, _.map(scope.model.SomeObject.ItemCollection, function (value) {
return { name: value.Desc, value: value.Code };
}));
}
}
}
});
忽略我在代码中修复的未定义,我的列表现在包含:
问题 1:我不确定为什么出于某种原因我在我的值中看到 string:JEEP 而不是 JEEP。
更新:所以我发现其他关于 Angular 的帖子正在做一些事情来创建一个唯一的键,这就是为什么它在值前面加上类型的前缀。但我不希望那样,因为我将不得不在保存我的对象之前将其删除。去除值类型的最有效方法是什么?或者是否有更好的方法来定义我的字段,使其不会出现这种行为。
问题 2:如何使此动态化以便我可以传入包含我的项目集合的模型 属性。而不是使用:
scope.model.SomeObject.ItemCollection
原来我可以忽略值前缀的类型。好像适当忽略了。
另外,对于我需要设置的 select 字段的动态列表绑定:
"expressionProperties": {
"templateOptions.options": "model.SomeObject.ItemCollection"
}