亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

AngularJS中獲取ng-repeat動態生成的ng-model值

標簽:
AngularJS

问题描述

需求:需要动态 添加或删除 input表单,问了度娘,ng-repeat找到了一个思路,但问题来了。
因为ng-model 是ng-repeat 动态生成的,ng-model=”变量”,什么变量,是未知的。所以你无法通过单个的$scope."变量" 取到所有值。
找啊找办法,终于找到了办法。

注意:ng-model="model{{$index}}" 是万万不可以的。

解决方法

Html代码

<div ng-repeat="param in params">
  <input type="text" ng-model="$parent.model[$index]" />
  <span ng-click="decr($index)"><!--减一行--></span></div><!--加一行--><div>
    <button  ng-click="incr()">新增</button></div>

用$parent 的原因是ng-repeat 产生的,他会为每一个input 生成一个子scope 对象,而$parent 表示用父类的scope,这样我们在JavaScript文件中才能取到该值。详情可以参考我的另一篇文章关于angular中$parent
$index 代表的意思是ng-repeat="param in params" 遍历时的下标 , model 是我们在js中的变量名

JavaScript代码

// 增加一行$scope.incr = function () {
    $scope.params.splice(1, 0, {key: new Date().getTime(), value: ""});
};// 减少一行$scope.decr = function ($index) {    // 如果数大于1,可删除
   if ($scope.params.length > 1) {
         $scope.params.splice($index, 1);
         $scope.model.splice($index, 1);
     }
};// 存储用户输入的值$scope.model = [];// 保存$scope.save = function(){
    console.log($scope.model);
};

我们在controller 中定义了一个$scope.model = [];
就是一个数组,刚好通过上面的代码,为该数组添加了元素,然后我们通过$scope.model 刚好把ng-model 的所有值自动保存了。

效果如图:

700

QQ截图20170803161925.png



作者:竿牍
链接:https://www.jianshu.com/p/b0536cee8b0c


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消