文本输入未绑定到对象数组

时间:2015-11-02 06:32:04

标签: angularjs

初始渲染时数据显示正常,这意味着如果我有自定义字段的数据,则值会显示在HTML上。

问题是,当我更改自定义字段的值时,更改不会附加回对象,换句话说,出于某种原因,绑定只是一种方式。

我有以下对象:

{ 
        "_id" : BinData(3, "6aUPCzvqTUuzZWlWRJCdPQ=="), 
        "name" : "MyObject", 
        "customFields" : [
            {
                "_id" : BinData(3, "ksRiQNZnuE2BKFpjbQEQaQ=="), 
                "name" : "Field 1", 
                "order" : NumberInt(1), 
                "type" : "string", 
                "isMultiValue" : false, 
                "values" : [
                    "11111"
                ]
            }, 
            {
                "_id" : BinData(3, "S9bSzoqy5EafPP0NEdbfCw=="), 
                "name" : "Field 2", 
                "order" : NumberInt(2), 
                "type" : "string", 
                "isMultiValue" : false, 
                "values" : [
                    ""
                ]
            }
        ]
    }

我绑定了以下HTML:

                    <div ng-repeat="customField in customer.customFields">
                        <p>
                            {{customField.name}}:
                        </p>
                        <p ng-repeat="customFieldValue in customField.values">
                            <input type="text" class="form-control" ng-model="customFieldValue" />
                        </p>
                    </div>

更新: 在@ngLover的建议之后,我得到了绑定在这种情况下正常工作:

这是新对象:

{ 
    "_id" : BinData(3, "FKibZl5WDk2jprg1gY5KAQ=="), 
    "name" : "MyObject", 
    "customFields" : [
        {
            "_id" : BinData(3, "3HUUHy1FMUaxD41JcuYqQw=="), 
            "name" : "Field 1", 
            "order" : NumberInt(1), 
            "type" : "string", 
            "isMultiValue" : false, 
            "values" : [
                {
                    "value" : "Data 1"
                }
            ]
        }, 
        {
            "_id" : BinData(3, "2t0oiy5LukSSuPR9XYKwcA=="), 
            "name" : "Field 2", 
            "order" : NumberInt(2), 
            "type" : "string", 
            "isMultiValue" : false, 
            "values" : [
                {
                    "value" : "Data 2"
                }
            ]
        }
    ]
}

新HTML:

                  <div ng-repeat="customField in customer.customFields">
                        <p>
                            {{customField.name}}:
                        </p>
                        <p ng-repeat="customFieldValue in customField.values">
                            <input type="text" class="form-control" ng-model="customFieldValue.value" >
                        </p>
                    </div>

1 个答案:

答案 0 :(得分:1)

请记住,每个ng-repeat都有自己的范围,因此,在您的第二个ng-repeat中,ng-model="customFieldValue"附加到第二个ng-repeat scope,而不是外部范围。