angularjs在ng-repeat中使用ng-model遇到的问题

前端技术 2023/09/09 JavaScript

在ng-repeat中使用ng-model时会有许多问题,有的人碰到无法获取绑定的数据内容,有的人遇到改动绑定的数据内容时所有循环生成的内容一起改变。上面的问题我在开发时也遇到过,但是解决后我却怎么也还原不了那种情况了,只能先简单介绍一下无法获取的情景该如何解决。

例如:

html:

<body>
<div ng-controller=\"selectController\">
  <div ng-repeat=\"pop in citylist\">
    <select ng-model=\"p\">
      <option value=\"\" style=\"display:none;\">{{pop.pop}}</option>
      <option value=\"北京\">北京</option>
      <option value=\"上海\">上海</option>
      <option value=\"广州\">广州</option>
    </select>
    <button ng-click=\"cs()\">ceshi</button>
  </div>
</div>
</body>

js:

<script>
  var app = angular.module(\'app\', []);
  app.controller(\'selectController\', function ($scope) {
    $scope.citylist=[{id:1,pop:\"北京\"},{id:1,pop:\"上海\"},{id:1,pop:\"广州\"}];
    $scope.cs=function(){
      console.log($scope.p);
    }
  })
</script>

很简单的功能,想要在点击更改按钮时获取select当前选中的数据内容,但是你会发现这样写只能得到undefined,此时有的人会提出可以将p赋予成为一个对象,通过key:value的方式来保存每一次的选择

$scope.p={};

这样确实没问题,但是会有一个新的问题那就是只要改动了一项,那么所有的内容都会跟着一起改变,那么有没有更好的方法呢?

只要一个小小的改动

html:

<button ng-click=\"cs(p)\">ceshi</button>

js:

 $scope.cs=function(p){
      console.log(p);
    }

这只是个简单的例子,如大家在实际使用时发现有别的问题也可以在评论中留言。

本文地址:https://www.stayed.cn/item/23476

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。