ввод текста не привязан к массиву объектов

0

При первоначальном рендеринге данные выглядят точными, то есть, если у меня есть данные для настраиваемых полей, значения отображаются в 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
    customField.values - это массив, делающий его простым как переменные значения: 11111
Показать ещё 1 комментарий
Теги:

1 ответ

1

помните, что каждый ng-repeat имеет свою собственную область видимости, поэтому во втором ng-repeat ng-model="customFieldValue" присоединяется ко второй области ng-repeat scope, а не к внешней области.

  • 0
    Итак, как мы можем решить это?
  • 1
    дочерние области наследуются от родительских областей. и вы можете получить доступ к свойствам родительской области, используя $scope.$parent.someproperty

Ещё вопросы

Сообщество Overcoder
Наверх
Меню