这里我使用角度树作为组件。当数据第一次进入时它工作正常。
但是数据来自后端,然后添加行按钮没有添加。
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)
答案 0 :(得分:2)
在推送之前,如果数组为null,则需要初始化数组
{{1}}
答案 1 :(得分:1)
这种情况正在发生,因为当节点没有子元素时,您没有从服务器返回空数组
在服务器端添加代码,在项目中添加一个空数组
或
@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: []
});
};