Javascript AngularJS最初用true填充数组,模型中每个值一个
我希望有一个带有值的数组,模型中的每个对象都有一个“true” 正如您在我的中所看到的,我目前已经硬编码了这些值,然后它就工作了,即“level 2”表从一开始就被折叠起来Javascript AngularJS最初用true填充数组,模型中每个值一个,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我希望有一个带有值的数组,模型中的每个对象都有一个“true” 正如您在我的中所看到的,我目前已经硬编码了这些值,然后它就工作了,即“level 2”表从一开始就被折叠起来 $scope.dayDataCollapse = [true, true, true, true, true, true]; $scope.dayDataCollapseFn = function () { for (var i = 0; $scope.storeDataModel.storedata.length
$scope.dayDataCollapse = [true, true, true, true, true, true];
$scope.dayDataCollapseFn = function () {
for (var i = 0; $scope.storeDataModel.storedata.length - 1; i += 1) {
$scope.dayDataCollapse.append('true');
}
};
但是当我用一个空数组和一个函数(如上图所示)替换硬编码来填充它时,这意味着为storeDataModel中的每个存储添加“true”,它就失败了。所有级别2的表都从一开始展开,但可以通过单击两次来折叠它们(一次用于向数组添加值,另一次用于折叠)
还尝试了“真实”功能…:
function dayDataCollapseFn() {
for (var i = 0; $scope.storeDataModel.storedata.length - 1; i += 1) {
$scope.dayDataCollapse.append('true');
}
};
…但我无法使$scope.dayDataCollapse初始填充
如何解决此问题?您的
for
循环不正确。中间表达式的计算结果为true/false,但您刚刚将其编码为一个常量值(对于任何函数调用都是常量)。试试这个:
function dayDataCollapseFn() {
for (var i = 0; i < $scope.storeDataModel.storedata.length; i += 1) {
$scope.dayDataCollapse.push(true);
}
};
函数dayDataCollapseFn(){
对于(变量i=0;i<$scope.storeDataModel.storedata.length;i+=1){
$scope.dayDataCollapse.push(true);
}
};
如果模型有一个元素,您的函数将什么也不做;如果模型有零个或多个元素,则会使用“慢速脚本”警告锁定浏览器
还要注意,您应该使用布尔常量true
,而不是字符串'true'
编辑-还要注意的是,它是
.push()
,而不是.append()
@Pointy让我找到了正确的方向…谢谢!)
…然后我解决了最后一件事
我忘了我使用了否定,即数据ng show=“!dayDataCollapse[$index]”,因为我首先使用了collapse=“dayDataCollapse[$index]”。然后我移除了塌陷,因为它不能很好地协同工作
无论如何……由于我删除了bang(!),我也可以使用false而不是true,然后当然也可以在$scope.selectTableRow()函数中切换布尔值
最后一件事是我使用if-else,if语句检查dayDataCollapse是否未定义,然后使用else检查逻辑。当然,逻辑并不是第一次触发的,因为它是未定义的
使其工作的函数…:
$scope.dayDataCollapseFn = function () {
$scope.dayDataCollapse = [];
for (var i = 0; i < $scope.storeDataModel.storedata.length; i += 1) {
$scope.dayDataCollapse.push(false);
}
};
$scope.selectTableRow = function (index, storeId) {
if ($scope.dayDataCollapse === undefined) {
$scope.dayDataCollapseFn();
}
if ($scope.tableRowExpanded === false && $scope.tableRowIndexCurrExpanded === "" && $scope.storeIdExpanded === "") {
$scope.tableRowIndexPrevExpanded = "";
$scope.tableRowExpanded = true;
$scope.tableRowIndexCurrExpanded = index;
$scope.storeIdExpanded = storeId;
$scope.dayDataCollapse[index] = true;
} else if ($scope.tableRowExpanded === true) {
if ($scope.tableRowIndexCurrExpanded === index && $scope.storeIdExpanded === storeId) {
$scope.tableRowExpanded = false;
$scope.tableRowIndexCurrExpanded = "";
$scope.storeIdExpanded = "";
$scope.dayDataCollapse[index] = false;
} else {
$scope.tableRowIndexPrevExpanded = $scope.tableRowIndexCurrExpanded;
$scope.tableRowIndexCurrExpanded = index;
$scope.storeIdExpanded = storeId;
$scope.dayDataCollapse[$scope.tableRowIndexPrevExpanded] = false;
$scope.dayDataCollapse[$scope.tableRowIndexCurrExpanded] = true;
}
}
$scope.dayDataCollapseFn=函数(){
$scope.dayDataCollapse=[];
对于(变量i=0;i<$scope.storeDataModel.storedata.length;i+=1){
$scope.dayDataCollapse.push(false);
}
};
$scope.selectTableRow=函数(索引,存储ID){
如果($scope.dayDataCollapse==未定义){
$scope.dayDataCollapseFn();
}
如果($scope.tableRowExpanded==false&&$scope.tableRowIndexCurrExpanded===“”&&&$scope.storeideExpanded==“”){
$scope.tableRowIndexPrevExpanded=“”;
$scope.tableRowExpanded=true;
$scope.tableRowIndexCurrExpanded=索引;
$scope.storeIdExpanded=storeId;
$scope.dayDataCollapse[index]=true;
}else if($scope.tableRowExpanded==true){
if($scope.tableRowIndexCurrExpanded==index&&$scope.storeIdeExpanded==storeId){
$scope.tableRowExpanded=false;
$scope.tableRowIndexCurrExpanded=“”;
$scope.storeIdExpanded=“”;
$scope.dayDataCollapse[index]=false;
}否则{
$scope.TableRowIndexPreveExpanded=$scope.tableRowIndexCurrExpanded;
$scope.tableRowIndexCurrExpanded=索引;
$scope.storeIdExpanded=storeId;
$scope.dayDataCollapse[$scope.tableRowIndexPrevExpanded]=false;
$scope.dayDataCollapse[$scope.tableRowIndexCurrExpanded]=true;
}
}
已更新
啊,看到我错过了“I@Pixic oh durr;等一下,我会更新答案(应该是
.push()
)我也试过了,但它仍然没有为模型中的每个对象更新一个true数组。我需要初始化它,以便从一开始就折叠所有级别2的表。我尝试直接从控制器调用dayDataCollapseFn,但得到一些错误…:TypeError:无法读取的属性“storedata”undefined@Pixic我不是家人ar带有Angular,我不知道您的数据模型对象是什么样子。该错误意味着该对象上没有“storedata”属性。@Pixic我将检查JSFIDLE…并修复一些其他错误。