【问题标题】:Unable to edit Input when using split() in angularJS在angularJS中使用split()时无法编辑输入
【发布时间】:2016-04-21 06:52:12
【问题描述】:

我有一个嵌套的 JSON 对象,其中包含一个属性的数组。 数组项有 ';'。

我想要实现的是对待';'作为分隔符,然后进一步拆分数组项以进行更改。

更改完成后,像以前一样重新加入它们。 问题是,我可以根据此分隔符拆分数组项,但无法对其进行编辑。 我的 JSON:

{
    name:"test1",
    xdata:["1;2;3","abhsad"]
}

这里是 plunker:http://plnkr.co/edit/VYTQ6jvJ1bCKosRXh2Nt?p=preview

【问题讨论】:

    标签: javascript arrays angularjs json angularjs-scope


    【解决方案1】:

    这会有点棘手,但它仍然是可能的。您将需要两个 ngRepeat 循环和很少的 ngInit/ngChange 操作来初始化和更新内容:

    angular.module('demo', []).controller('DemoController', Ctrl);
    
    function Ctrl($scope) {
      $scope.group = {
        name: "test1",
        xdata: ["1;2;3", "abhsad"]
      }
    }
    <script src="//code.angularjs.org/1.5.5/angular.min.js"></script>
    
    <div ng-app="demo" ng-controller="DemoController">
    
      <div ng-repeat="(i, val) in group.xdata track by $index" 
           ng-init="parts = val.split(';')">
        
        <input type="text" 
               ng-model="part" 
               ng-repeat="(j, part) in parts track by $index" 
               ng-change="parts[j] = part; group.xdata[i] = parts.join(';')">
      </div>
    
      <pre>group = {{group | json}}</pre>
    </div>

    【讨论】:

      【解决方案2】:

      您必须为每个拆分值创建模型,然后在更改文本框中的值时更新模型对应的模型,之后您可以编写一个更新xData 值的函数。

      这是一个示例 plnkr http://plnkr.co/edit/0Rvi59pJJwwaw4zBMDD3?p=preview

      【讨论】:

      • 这仅适用于数组中的第一项,因为您已给出数组索引 [0]
      猜你喜欢
      • 2020-04-30
      • 1970-01-01
      • 2017-11-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多