Javascript 为什么拼接不能正常工作

Javascript 为什么拼接不能正常工作,javascript,angularjs,angularjs-directive,angularjs-scope,angular-ui-router,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angular Ui Router,我正在尝试制作一个演示,其中有一个复选框列表。我可以使用ng repeat显示列表 如果用户单击一个复选框(只选中一个复选框),我需要什么。它只显示一列(100%)宽度。哪个用户选中两列,它显示两列相等宽度(50%).如果用户选中三列,则显示三列等宽..就像用户选中四个复选框,则显示四列等宽..最初选中了部分复选框(选中:true) 我的第一步是取消选中选中的选项“training 3”。但取消选中后,它仍会显示原因?我已经用过了。方法 这是我的密码 init(); 函数init(){ 对

我正在尝试制作一个演示,其中有一个复选框列表。我可以使用ng repeat显示列表

如果用户单击一个复选框(只选中一个复选框),我需要什么。它只显示一列(100%)宽度。哪个用户选中两列,它显示两列相等宽度(50%).如果用户选中三列,则显示三列等宽..就像用户选中四个复选框,则显示四列等宽..最初选中了部分复选框(选中:true

  • 我的第一步是取消选中选中的选项“training 3”。但取消选中后,它仍会显示原因?我已经用过了。方法
这是我的密码

init();
函数init(){

对于(var i=0;i它可以简单得多。在HTML中,您甚至不需要
ngChange
处理程序,只需绑定到checked属性:

  <div class="checkbox" ng-repeat='v in vm.data'>
    <label>
      <input type="checkbox" ng-model='v.checked'> {{v.name}}
    </label>
  </div>
因此,在没有任何逻辑的情况下清理控制器,使用模板
vm.data | filter:{checked:true}
执行所有必要的列过滤


演示:

之所以发生这种情况,是因为您试图将其从第2个索引中删除,而培训3在第0个索引中

else
    {
      alert('unchecked '+i);
      var index = self.selectedList.indexOf(obj);
      self.selectedList.splice(index,1);

    }
把你的其他部分改成这个,它会很好用的


Q实际问题与此类似,但如果我最初选中了某个复选框,则拼接不起作用。我会删除此帖子。但我看到的指导原则是,每个问题只问一个问题。如果您的代码仍然存在问题,可以问另一个问题。不过,如果您打算这样做,最好尝试删除此帖子确保新问题不是第一个问题的副本。请记录,
.splice()
工作非常好,这是一段经过良好测试的代码。请检查我的警报。在开始数组中,长度为2,这很好…但当我取消选中第三个选项时,计数再次为2。它显示为1。您的数组只有2个项目,您正在尝试执行
拼接(3,1)
。它不起作用是因为您的逻辑错误,而不是因为
splice
您能解释一下这个ng repeat=“i in filteredList=(vm.data | filter:{checked:true})”vm.data被分配给filteredList列表(相同的引用)?以及过滤器是如何工作的..它检查vm.data中的所有内容。换句话说{checked:true}使用表达式
filteredList=(vm.data | filter:{checked:true})”检查vm.data中的所有对象
您可以创建一个新的“变量”
filteredList
,这样您就可以在
{12/filteredList.length}
中重用它,而无需编写
{12/(vm data | filter:{checked:true}).length}
效率较低且更难阅读。
过滤器
类似于普通的JS过滤器方法,在这种情况下,它使用
checked:false
填充数组元素。
  <div class="checkbox" ng-repeat='v in vm.data'>
    <label>
      <input type="checkbox" ng-model='v.checked'> {{v.name}}
    </label>
  </div>
  <div ng-repeat="i in filteredList = (vm.data | filter:{checked:true})" class='col-xs-{{12/filteredList.length}}'>
    {{i.name}}
  </div>
else
    {
      alert('unchecked '+i);
      var index = self.selectedList.indexOf(obj);
      self.selectedList.splice(index,1);

    }