Angular Formly 复杂对象建模
Angular Formly Model with complex object
我正在使用 Angular Formly,并且如果模型是范围的值(如字符串),则效果很好:
{
key: 'name',
type: 'input'
}
问题是我正在使用更详细的对象来处理模型,使用 "controller as" 语法和名称作为用户对象的一部分:
vm.user = {name: 'john', lastname: 'doe'}
当然,关键是:
{
key: 'user.name',
type: 'input'
}
(通常vm是从形式表示的key中取出来的)
问题在于 Formly 使用括号符号来处理模型:
template = '<input ng-model=\"model[options.key]\">'
处理后输出如下:
<input name="bd.form_input_user.name_1" type="text" ng-model="model.user.name">
当然,模型没有用户对象和空字段显示。
所以,我的问题是:当对象是更复杂的对象时,如何将适当的对象传递或 link 到形式模型?
提前致谢。
模型可以在表单和字段级别定义,因此很容易将对象图中的任何 属性 用作表单字段。一个例子:
标记:
<div ng-controller="MyCtrl as vm">
<formly-form model="vm.data" fields="vm.userFields">
<button type="submit" class="btn btn-default" ng-click="vm.submit(vm.user)">Submit</button>
</formly-form>
</div>
JavaScript:
angular
.module('myApp', ['formly', 'formlyBootstrap'])
.controller('MyCtrl', ['$scope', function($scope) {
var vm = this;
vm.data = {
user: {
name: 'john',
lastname: 'doe'
},
extra: 'extra'
};
vm.userFields = [
{
model: vm.data.user,
key: 'name',
type: 'input',
templateOptions: {
type: 'text',
label: 'Name',
placeholder: 'Enter name'
}
},
{
model: vm.data.user,
key: 'lastname',
type: 'input',
templateOptions: {
type: 'text',
label: 'Lastname',
placeholder: 'Enter lastname'
}
},
{
key: 'extra',
type: 'input',
templateOptions: {
type: 'text',
label: 'Extra',
placeholder: 'Enter extra'
}}
];
}]);
A fiddle: http://jsfiddle.net/masa671/c37gxg3h/
我正在使用 Angular Formly,并且如果模型是范围的值(如字符串),则效果很好:
{
key: 'name',
type: 'input'
}
问题是我正在使用更详细的对象来处理模型,使用 "controller as" 语法和名称作为用户对象的一部分:
vm.user = {name: 'john', lastname: 'doe'}
当然,关键是:
{
key: 'user.name',
type: 'input'
}
(通常vm是从形式表示的key中取出来的)
问题在于 Formly 使用括号符号来处理模型:
template = '<input ng-model=\"model[options.key]\">'
处理后输出如下:
<input name="bd.form_input_user.name_1" type="text" ng-model="model.user.name">
当然,模型没有用户对象和空字段显示。
所以,我的问题是:当对象是更复杂的对象时,如何将适当的对象传递或 link 到形式模型?
提前致谢。
模型可以在表单和字段级别定义,因此很容易将对象图中的任何 属性 用作表单字段。一个例子:
标记:
<div ng-controller="MyCtrl as vm">
<formly-form model="vm.data" fields="vm.userFields">
<button type="submit" class="btn btn-default" ng-click="vm.submit(vm.user)">Submit</button>
</formly-form>
</div>
JavaScript:
angular
.module('myApp', ['formly', 'formlyBootstrap'])
.controller('MyCtrl', ['$scope', function($scope) {
var vm = this;
vm.data = {
user: {
name: 'john',
lastname: 'doe'
},
extra: 'extra'
};
vm.userFields = [
{
model: vm.data.user,
key: 'name',
type: 'input',
templateOptions: {
type: 'text',
label: 'Name',
placeholder: 'Enter name'
}
},
{
model: vm.data.user,
key: 'lastname',
type: 'input',
templateOptions: {
type: 'text',
label: 'Lastname',
placeholder: 'Enter lastname'
}
},
{
key: 'extra',
type: 'input',
templateOptions: {
type: 'text',
label: 'Extra',
placeholder: 'Enter extra'
}}
];
}]);
A fiddle: http://jsfiddle.net/masa671/c37gxg3h/