Javascript 在angularjs中使用remove clicked元素和作用域

Javascript 在angularjs中使用remove clicked元素和作用域,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,HTML <div ng-controller="BlogData" > <form ng-submit="removeTodo()"> <ul> <li ng-repeat="blog in bloges"> {{blog.name}} <p>{{blog.mobile}}</p> <p>{{blog.description}}</p>

HTML

<div ng-controller="BlogData" >
    <form ng-submit="removeTodo()">
    <ul>
      <li ng-repeat="blog in bloges">
      {{blog.name}}
      <p>{{blog.mobile}}</p>
       <p>{{blog.description}}</p> 
       <input class="btn-primary" type="submit" value="remove">
       <p></p>
      </li>
    </ul>
    </form>

    <form ng-submit="addTodo()">
      <label>Name:</label><input type="text" ng-model="todoName"  size="30"
             placeholder="add your name">
      <label>Mobile:</label><input type="number" ng-model="todoMobile"  size="30"
             placeholder="add your mobile">
      <label>Description:</label><input type="text" ng-model="todoDesc"  size="30"
             placeholder="add some description">
      <hr>
      <h1>Hello {{todoName }}!</h1>  
      <h1>Your mobile is {{todoMobile}}!</h1>
      <h1>About my Details :-  {{todoDesc}}!</h1>
      <input class="btn-primary" type="submit" value="add">
    </form>
</div>
我在删除元素时遇到问题。当我单击某个元素时,将删除该元素并删除最后一个元素。我也试过,但没能成功

这是一个

一些与角度实现相关的问题:-

  • 我们需要使用表单操作
    ng submit=“addTodo()”
    或者我们需要使用
    请区分

  • 在full flex web应用程序中,是否有人能够以实用的方式定义正确的范围


  • 请引导我。。谢谢

    由于pop,它将删除最后一个元素。您需要找到要查找的元素的索引并拼接它。为简洁起见,请使用lo dash:

    $scope.removeTodo = function() {
        var index = $scope.bloges.indexOf({name:$scope.todoName, mobile:$scope.todoMobile, description:$scope.todoDesc, done:false}, 0);
        $scope.bloges.splice(index, 1);
        $scope.todoName = '';
        $scope.todoMobile = '';
        $scope.todoDesc = '';
      };
    
    理想情况下,您将实际从视图中传递“blog”,这样您就不需要每次在delete中进行对象表示

    $scope.removeTodo = function(blog) {
            var index = $scope.bloges.indexOf(blog, 0);
            $scope.bloges.splice(index, 1);
            $scope.todoName = '';
            $scope.todoMobile = '';
            $scope.todoDesc = '';
          };
    

    您可以尝试两个选项
    filter
    splice

    过滤器

    HTML

    添加
    ng单击过滤器(博客)

    另一种方式是:

    添加
    ng click=“拼接(博客,博客)

    拼接

    HTML

    作为旁注

    \u过滤器的工作原理:

    filter
    \u.filter(列表、迭代器、[context])
    别名:选择
    查看列表中的每个值,返回所有值的数组 通过真值测试的值(迭代器)。出席会议的代表 本机筛选器方法(如果存在)。

    var evens=2;.filter([1,2,3,4,5,6],函数(num){returnnum%2==0;}); => [2, 4, 6]
    如果有人为此创建一个JSFIDLE,那将是最好的。
    。如果你发布了这个代码,也会很好,please@MAxim我无法创建它。。我会再检查一遍的。。我想感谢您的宝贵支持。这是您的全部代码吗?可以复制/粘贴到Fiddle吗?@Maxim我以前创建过它。。但是我得到了一些错误。我也装了角装。。谢谢@Maxim非常感谢您的编辑:)+1感谢您的帮助。。但我面临一些引用错误:\在使用此代码时未定义..1分钟后,我将尝试在中修复它FIddle@Neeraj您可以使用数组而不是json对象,这对实现更有利。@MaximShoustin感谢您的宝贵支持!!答:)它来自下划线/lodash-我只是为了简洁而使用它,因为我不想写出一个完整的“indexOf”函数,这是一个常见的、支持google的函数。我将修改我的答案以使用它。
    $scope.removeTodo = function(blog) {
            var index = $scope.bloges.indexOf(blog, 0);
            $scope.bloges.splice(index, 1);
            $scope.todoName = '';
            $scope.todoMobile = '';
            $scope.todoDesc = '';
          };
    
    <input class="btn-primary" type="submit" value="remove"  ng-click="splice(blog, bloges)">
    
      $scope.theFilter = function(field) {
       $scope.bloges = _.filter($scope.bloges, function(nodeClient) {
          return !(nodeClient.name == field.name &&
                 nodeClient.mobile == field.mobile &&
                  nodeClient.description == field.description
                 );
         });      
     };
    
    <input class="btn-primary" type="submit" value="remove"  ng-click="splice(blog, bloges)">
    
     $scope.splice = function(field, fields) {     
        fields.splice(fields.indexOf(field), 1);
     };
    
    var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); => [2, 4, 6]