无法读取 ChildScope.$scope.criaOpcao 上未定义的属性'push'



TypeError: 无法读取未定义的属性"push" at ChildScope.$scope.criaOpcao (appCtrl.js:49(**

// chamada para quando o formulário é enviado
$scope.criaOpcao = function (opcao) {
if (!$scope.projetoAtivo || !opcao) {
return;
}
$scope.projetoAtivo.opcoes.push({
title: opcao.title
});
// fecha o modal de opções
$scope.opcaoModal.hide();
// meio ineficiente, mas salva os projetos
Projetos.save($scope.projetos);
};

要么在函数外部,要么在控制器中,你应该定义这个变量:

$scope.projetoAtivo = [];

OR 在函数的开头应该声明。

这是一个简单的用例,您尝试对变量调用 push 方法,但由于该变量未定义,因此它为您提供未定义。必须首先将此变量声明为数组,以允许将元素推送到该数组。

您应该检查opcoes是否存在及其类型才能执行.push()

$scope.criaOpcao = function (opcao) {
if (!$scope.projetoAtivo || !opcao) {
return;
}
// prop 'opcoes' should exist and be an array
if (
$scope.projetoAtivo.hasOwnProperty('opcoes') 
&& angular.isArray($scope.projetoAtivo.opcoes)) {
$scope.projetoAtivo.opcoes.push({
title: opcao.title
});
}
$scope.opcaoModal.hide();
Projetos.save($scope.projetos);
};

最新更新