如何将DOM-element中的任何内容传递给$ scope中定义的函数

时间:2014-10-25 13:45:23

标签: javascript angularjs

示例:

<div ng-repeat="obj in objList">
    <input type="text" id="obj_{{obj.id}}"/>
    <button ng-click="removeRow(NEED PARAM HERE)">Remove</button>
</div>

我可以使用按钮的ID或者父母的,但我不确切知道如何。

第二个类似的情况:例如,当我想从输入中获取一些值时。我该怎么办?

2 个答案:

答案 0 :(得分:3)

只需在您的函数中传递obj,然后从控制器中的obj移除对象objList,它就会从您的视图中消失,这就是角度数据绑定的工作方式:

<div ng-repeat="obj in objList">
  <input type="text" id="obj_{{obj.id}}"/>
  <button ng-click="removeRow(obj)">Remove</button>
</div>

在你的控制器中:

$scope.removeRow = function(obj) { 
  var index = $scope.objList.indexOf(obj);
  $scope.objList.splice(index, 1);     
}

答案 1 :(得分:3)

有点难以理解您的问题,但是您是否尝试将value从文本字段传递给该函数,以便从列表中删除该行?

如果这是真的那么你想要做这样的事情。

您想要使用ngRepeat track by功能。见https://docs.angularjs.org/api/ng/directive/ngRepeat

<强> HTML

<div ng-repeat="obj in objList track by $index">
  <input type="text" id="obj_{{obj.id}}" />
  <button ng-click="removeRow($index)">Remove</button>
</div>

此时,您只是使用基本的Javascript splice功能从索引中删除Array中的项目。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

<强> JS

 $scope.removeRow = function($index) {
  $scope.objList.splice($index, 1);
};

另见AngularJS How to remove an Item from scope