首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剪接角范围删除

剪接角范围删除
EN

Stack Overflow用户
提问于 2014-08-08 15:53:35
回答 2查看 280关注 0票数 0

当尝试使用剪接从列表中删除一个项目时,我的整个列表被销毁了吗?会是什么原因呢?

HTML:

代码语言:javascript
复制
<ul class="nav nav-tabs">
  <li ng-repeat="pane in panes" ng-class="{active:pane.selected}">
      <a href="" ng-click="select(pane)">
          {{pane.title}}&nbsp;
          <sup ng-click="close(pane)">x</sup>
      </a>
  </li>
  <li>
      <a href="" ng-click="createPane()">+</a>
  </li>
</ul>

JS

代码语言:javascript
复制
.controller('editCtrl', ['$scope', function($scope){

    $scope.panes = [];
    var ctrl  = this;
    /*===========Select===========*/
    $scope.select = function(pane) {
      angular.forEach($scope.panes, function(pane) {
        pane.selected = false;
      });
      pane.selected = true;
    };
    /*==========Add-Pane=========*/
    this.addPane = function(pane) {
      if ($scope.panes.length === 0) {
        $scope.select(pane);
      }
      $scope.panes.push(pane);
    };
    /*===========Create===========*/
    $scope.createPane = function() {
        var pane = {
            title: 'untitled',
            content: 'Scope:'+$scope.$id
        }
        ctrl.addPane(pane);
    };
    /*===========Close===========*/
    $scope.close = function(pane) {
        var idx = $scope.panes.indexOf(pane);
        //$scope.panes.splice(pane, 1);
        if (idx != -1) $scope.panes.splice(idx, 1); 
    }
}]);

特别是我看的是封闭的方法,其余的都工作得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 16:21:36

我想你的名单没有被任何东西毁了。

但是,这些href=""标记上的<a>使整个页面在单击x图标时被刷新。

尝试像这样删除那些href

代码语言:javascript
复制
<ul class="nav nav-tabs">
  <li ng-repeat="pane in panes" ng-class="{active:pane.selected}">
      <a ng-click="select(pane)">
          {{pane.title}}&nbsp;
          <sup ng-click="close(pane)">x</sup>
      </a>
  </li>
  <li>
      <a ng-click="createPane()">+</a>
  </li>
</ul>

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-08-08 16:08:21

在将$index作为参数发送到close($index)函数时,您已经在传递要删除的窗格的索引。

因此,您的关闭函数应该如下所示:

代码语言:javascript
复制
$scope.close = function(i){
    var removedPane = $scope.panes.splice(i,1);
    // do something here with the "removedPane" if you want to
};

这条线

代码语言:javascript
复制
var idx = $scope.panes.indexOf(pane);

正在试图查找被发送到函数的索引,因此idx很可能是未定义的。

编辑

你需要像这样回过头来打电话:

代码语言:javascript
复制
`ng-click="close($index)"`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25207436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档