Javascript 为什么拼接不能正常工作
我正在尝试制作一个演示,其中有一个复选框列表。我可以使用ng repeat显示列表 如果用户单击一个复选框(只选中一个复选框),我需要什么。它只显示一列(100%)宽度。哪个用户选中两列,它显示两列相等宽度(50%).如果用户选中三列,则显示三列等宽..就像用户选中四个复选框,则显示四列等宽..最初选中了部分复选框(选中:true)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(){ 对
- 我的第一步是取消选中选中的选项“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);
}