javascript - 使用元素计数器的 angular.element 问题

标签 javascript angularjs

我正在使用 AngularJS 开发一个应用程序。在我的应用程序的某些部分,我有一个按钮,当我单击该按钮时,它会添加一个新的输入来添加电话。对于每个输入,都有一个删除链接来删除该输入。

在我的代码中,我正在使用计数器。

由于某些原因,我无法做到正确!

查看:

<div id="div{{$index}}" style='z-index: 1' ng-repeat="cEdit in telephone" ng-show="contactsElements">
    <input type="text" ng-model="cEdit" maxlength="15">
    <a href="javascript:void(0)" ng-click="removeDIV($index)">Remove</a>
</div>
<div ng-show="contactsElements">
    <div id="space-for-new-telephones"></div>
    <button ng-click="addDIV()">Add</button>
</div>

JS:

$scope.removeDIV = function (arrAddr) {
    console.log("Array Index = " + arrAddr);
    var iEl = angular.element(document.querySelector('#div' + arrAddr));
    iEl.remove();
    if ($scope.count > 0) {
        $scope.count = $scope.count - 1;
        console.log($scope.count);
    }                
}

$scope.addDIV = function () {
    if ($scope.count <= 2) {
        angular.element(document.getElementById('space-for-new-telephones')).append("<div id='div" + $scope.count + "'><input type='text' ng-model='$scope.telephone.num[" + $scope.count + "]' maxlength='15'>&nbsp;<a href='javascript:void(0)' ng-click='removeDIV(" + $scope.count + ")'>Remove</a></div>");
        $scope.count++;
        console.log($scope.count);
    }        
}

我的问题是我通过按下按钮手动添加它们的输入...看起来我的附加命令有问题。

ng-click='removeDIV(" + $scope.count + ")'

我可以添加元素并将其显示在 View 中,但稍后无法将其删除。

请注意, View 中已经使用 ng-repeat 的元素工作正常,我可以删除它们。

最佳答案

你不应该像使用 Angular 那样操作 DOM。您应该在代码中操作数据,并让 DOM 为您反射(reflect)这些更改。就像您在代码的第一个 div 中使用 ng-repeat="cEdit in Phone" 所做的那样。 您可以在 $scope 中创建一个数组来保存所有新电话。然后从数组中添加和删除项目,使用 ng-repeat 渲染现有项目,而不是 appendremove

如果你确实需要操作 DOM,你应该使用指令 - https://docs.angularjs.org/guide/directive

以下是有关 DOM 操作概念的更多信息 - http://tech.zumba.com/2014/08/02/angularjs-forget-jquery/

关于javascript - 使用元素计数器的 angular.element 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38067522/

相关文章:

javascript - AngularJS 未捕获错误 : [$injector:modulerr] -- noob here

javascript - AngularJS 延迟然后只被调用一次

angularjs - AngularJS 中的自适应布局(移动/桌面) - 首选的方式是什么(内部示例)

javascript - Angular Ajax,函数外 undefined variable

javascript - 为什么我无法获取此文本输入的值?

javascript - 点击注册按钮后生成一个随机数

javascript - 服务返回的值未在 angularjs 中的 Controller 变量中更新

javascript - Firebase:使用预留主机 URL 时未创建 Firebase 应用程序 '[DEFAULT]'

javascript - 从 window.onbeforeunload() 上传文件

android - Chrome Web View : triggering native Android Share function