Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS最初用true填充数组,模型中每个值一个_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript AngularJS最初用true填充数组,模型中每个值一个

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

我希望有一个带有值的数组,模型中的每个对象都有一个“true”

正如您在我的中所看到的,我目前已经硬编码了这些值,然后它就工作了,即“level 2”表从一开始就被折叠起来

$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…并修复一些其他错误。