【问题标题】:Angular Formly Model with complex object具有复杂对象的 Angular Formly 模型
【发布时间】:2015-12-12 06:06:15
【问题描述】:

我正在使用 Angular Formly,如果模型是范围的值(如字符串),则效果很好:

{
    key: 'name',
    type: 'input'
}

问题是我正在使用更精细的对象来处理模型,使用“控制器作为”语法和名称作为用户对象的一部分:

vm.user = {name: 'john', lastname: 'doe'} 

当然,关键是:

{
    key: 'user.name',
    type: 'input'
}

(通常 vm 以正式的符号从键中取出)。

问题在于 Formly 使用方括号表示来处理模型:

template = '<input ng-model=\"model[options.key]\">'

当处理时,会吐出这个输出:

<input name="bd.form_input_user.name_1" type="text" ng-model="model.user.name">

当然,模型没有显示用户对象和空字段。

所以,我的问题是:当它是一个更复杂的对象时,我如何将适当的对象传递或链接到正式模型?

提前致谢。

【问题讨论】:

    标签: angularjs angular-formly


    【解决方案1】:

    模型可以在表单和字段级别定义,因此很容易将对象图中的任何属性用作表单字段。一个例子:

    标记:

    <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'
            }}
        ];
    }]);
    

    小提琴:http://jsfiddle.net/masa671/c37gxg3h/

    【讨论】:

    • 完美!优雅简约
    • 注意,在本例中,您也可以省略 model 属性,而将 key 指定为:user.name
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2017-03-26
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多