组件中未添加新行

时间:2017-08-16 08:37:19

标签: angularjs

这里我使用角度树作为组件。当数据第一次进入时它工作正常。

但是数据来自后端,然后添加行按钮没有添加。

Plunker 这是我的代码。

$scope.newSubItem = function(scope) {

        var nodeData = scope.$modelValue;
        nodeData.items.push({
            id: nodeData.items.length?(nodeData.items[nodeData.items.length-1].id)+1:nodeData.id * 10,
                    rowId: nodeData.rowId + '.' + ((nodeData.items.length?(parseInt(nodeData.items[nodeData.items.length-1].rowId.split('.').pop()))+1:1)),
                    items: []
        });
    };

错误是

 TypeError: Cannot read property 'push' of null
    at Scope.$scope.newSubItem (app.js:19)
    at $parseFunctionCall (angular.js:12332)
    at callback (angular.js:22949)
    at Scope.$eval (angular.js:14383)
    at Scope.$apply (angular.js:14482)
    at HTMLAnchorElement.<anonymous> (angular.js:22954)
    at HTMLAnchorElement.eventHandler (angular.js:3011)

2 个答案:

答案 0 :(得分:2)

在推送之前,如果数组为null,则需要初始化数组

{{1}}

答案 1 :(得分:1)

这种情况正在发生,因为当节点没有子元素时,您没有从服务器返回空数组

enter image description here

在服务器端添加代码,在项目中添加一个空数组

@Sajeetharan是对的,您需要在newSubItem函数中添加此代码

$scope.newSubItem = function(scope) {

    var nodeData = scope.$modelValue;
    if(!nodeData.items)
        nodeData.items =[];
    nodeData.items.push({
        id: nodeData.items.length?(nodeData.items[nodeData.items.length-1].id)+1:nodeData.id * 10,
                rowId: nodeData.rowId + '.' + ((nodeData.items.length?(parseInt(nodeData.items[nodeData.items.length-1].rowId.split('.').pop()))+1:1)),
                items: []
    });
};