【问题标题】:Binding ng model by key of loop issue通过循环问题的键绑定 ng 模型
【发布时间】:2018-05-13 02:53:08
【问题描述】:

我正在尝试将值绑定到 ng-model="" 指令,因为我正在循环显示带有它的元素。

我试过这样

<div class="form-group">
    <div data-ng-repeat="(key, n) in langInput.values">
        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 u-no-padding">
            <label class="sell__label" for="auction_name_account_{{n.selected }}">Główna nazwa Twojej aukcji ({{n.selected }}):</label>
            <div class="pst-relative">
                <input type="text"
                       id="auction_name_account_{{n.selected }}"
                       class="form-control"
                       name="auction_name_account"
                       data-ng-model="inputs.auction_name_account[key]"
                       data-ng-minlength="10"
                       data-ng-maxlength="60"
                       required />
                <span class="sell__input-text sell__input-text--big-input" data-ng-show="sellItem.auction_name_account.$error.required">Wymagane!</span>
                <span class="sell__input-text sell__input-text--big-input" data-ng-show="sellItem.auction_name_account.$error.minlength">Za krótkie!</span>
                <span class="sell__input-text sell__input-text--big-input" data-ng-show="sellItem.auction_name_account.$error.maxlength">Za długie!</span>
            </div>
        </div>
    </div>

我需要有独特的模型来首先创建工作验证(下面的跨度),然后收集数据并将其发送到 rest api。

这个[key] 不知何故不会打印为对象的键,它是数字,而是我在控制台中看到的普通字符串。

langInput 的数据是

$scope.langInput = {
    values: [
        {
            id: 1,
            selected: "pl"
        },
        {
            id: 2,
            selected: "eng"
        }
    ],

我想要ng-model="inputs.auction_name_account[1]",其中 1 是绑定值或类似的东西。上面的对象数组也发生了变化。

【问题讨论】:

标签: javascript angularjs bind angularjs-ng-model


【解决方案1】:

auction_name_account 在生成时将成为一个对象。

这意味着所有属性访问器都必须是一个字符串,并且不是字符串的属性将被类型转换为一个。这就是为什么虽然key 是一个整数,但它会在使用时转换为字符串。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors#Property_names

【讨论】:

  • 我编辑的对象在浏览器控制台中只包含字符串和 ng 模型仍然是 inputs.auction_name_account[key] look plnkr.co/edit/c4tOS0KBzTtzVAKSyq2b?p=preview
  • 这是因为你还没有声明inputs。 AngularJS 会在你使用它时尝试声明变量,但它不会只在访问器上这样做。 inputs 需要首先存在。使用$scope.input = {}; 定义它
  • 还是不行..plnkr.co/edit/C9t2q8fNxYV56nnDtacM?p=preview 看看plunker,试试你的想法,如果有帮助就写出来
  • plnkr.co/edit/zaHPNWHhDSLwYZIKvmXh?p=preview 我所做的唯一更改是使用{{inputs}},因此您可以看到对象的内容。在每个输入字段中输入超过 10 个字符后,我可以看到 inputs 的内容发生变化。
  • 你的 plunker 在我的机器上不工作。输入的 ng-model 仍然是 [tab]
猜你喜欢
  • 2010-10-18
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多