Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度存储将输入值重复到模型中_Javascript_Angularjs - Fatal编程技术网

Javascript 角度存储将输入值重复到模型中

Javascript 角度存储将输入值重复到模型中,javascript,angularjs,Javascript,Angularjs,我在填充输入值数组时遇到问题。我想我知道为什么,但我似乎无法回避 为名为SelectedAttribute[]的数组中的每个项创建一个输入元素。我希望每个输入元素的值和属性一起存储到一个新对象中,从而创建一个哈希/映射 现有数组:所选属性[“属性1”,“属性N”] 目标: 到目前为止,HTML不起作用 <tbody> <tr ng-repeat="attribute in selectedAttributes"> <t

我在填充输入值数组时遇到问题。我想我知道为什么,但我似乎无法回避

为名为SelectedAttribute[]的数组中的每个项创建一个输入元素。我希望每个输入元素的值和属性一起存储到一个新对象中,从而创建一个哈希/映射

现有数组:所选属性[“属性1”,“属性N”]

目标

到目前为止,HTML不起作用

    <tbody>
        <tr ng-repeat="attribute in selectedAttributes">
            <td><a>{{attribute}}</a></td>

            <td> ---> </td>

            <td><input ng-model="formFields.attribute" class="field" id="{{attribute}}" type="text" >   </td>
        </tr>
    </tbody>

{{attribute}}
---> 
如果这是不可能的,我认为可以将输入值存储到数组中,然后将selectedAttributes[]与输入值列表结合起来,但我宁愿避免这样做


谢谢

我不确定我是否理解你的问题。但这里是您可以看到如何动态添加字段。也许有用

您是否尝试在ng模型中使用formFields[属性]

您将需要一个事件来调用函数以将新值保存到数组中

这里有一个例子

编辑:


添加了一个指令,以便您可以通过单击按钮或通过值字段中的enter键保存新条目。

答案是下面两个答案的组合,但这两个答案都非常有助于我解决此问题。很明显,现在我明白发生了什么,所以如果有人认为我足够聪明,我道歉。我需要用属性的空值初始化对象,然后使用formFields[attribute]将输入值绑定到属性

我认为问题在于(希望在此确认/更正): ng repeat为selectedAttributes数组中的每个项目创建一个新的输入元素,这很好,但它也为每一行创建一个新的范围。所以ng模型绑定到当前范围。这意味着,如果在ng model=formFields中存储任何内容,则下一个作用域将创建新的formFields并添加新作用域的值

此外,如果您从未定义模型的“类型”(数组与对象),我认为angular不会做出任何假设,因此它只会抛出“undefined”,以便安全地将值存储到模型中

解决方案 因此,直观地说,您应该首先在控制器中创建模型,初始化类型,并在值进入时从视图中动态推送值

a。在控制器中,使用映射中键的空值初始化新对象

$scope.formFields = {};
b。现在,对象具有键,因此我们可以使用ng模型将输入字段的值绑定到使用object[key]方法的键

   <tbody>
    <tr ng-repeat="attribute in selectedAttributes">
        <td><a>{{attribute}}</a></td>

        <td> ---> </td>

        <td><input ng-model="formFields[attribute]" class="field" id="{{attribute}}" type="text" >   </td>
    </tr>
 </tbody>

{{attribute}}
---> 
我将避免将答案作为标记,因为我希望为未来的人和我自己提供一个最佳实践答案


这种做法不好吗?为什么?什么更好?

那不行。formFields[attribute]正在访问key=attribute的值。这是不存在的,因为formFields还没有被创建,当它创建时,它将没有任何值,这就是我要做的。我试着储存而不是阅读。我需要像formFields[index]=inputValue这样的东西。
   <tbody>
    <tr ng-repeat="attribute in selectedAttributes">
        <td><a>{{attribute}}</a></td>

        <td> ---> </td>

        <td><input ng-model="formFields[attribute]" class="field" id="{{attribute}}" type="text" >   </td>
    </tr>
 </tbody>