无法调用未定义的方法'push'
当我的AngularJS运行以下内容时收到该错误:
$scope.ok = function () {
$modalInstance.close();
$scope.key.push({ title: '', gps:'', desc:''});
};
我在$scope.key = [];
之后立即声明我的.controller
因为我需要能够在应用程序的其他部分使用$scope.key
。有人可以指出我应该在哪里宣布这个吗?
$scope.ok
是我的保存按钮,它从我的输入字段中提取数据,而我$scope.plotmarkers
用于从已推送的输入中提取数据。
app.controller('MenuSideController', ['$scope','$modal','$log', function($scope, $modal, $log) {
$scope.key = [];
$scope.createmarker = function () {
var modalInstance = $modal.open({
templateUrl: 'template/modal-add-marker.html',
controller: ModalInstanceCtrl,
resolve: {}
});
modalInstance.result.then(function (selectedItem) {
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
var ModalInstanceCtrl = function ($scope, $modalInstance) {
$scope.ok = function () {
$modalInstance.close();
$scope.key.push({ title: '', gps:'', desc:''});
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
$scope.plotmarkers = function() {
console.log($scope.key);
};
}]);
答案 0 :(得分:0)
不要忘记将范围传递给$modal.open
!如果不这样做,它将默认为根范围,它不是控制器范围的子节点,因此未在其上或其父节点上定义key
。您可以使用{ scope: $scope.$new(), ... }
作为$model.open
的参数来将其传递给控制器范围的子节点。有关详细信息,请参阅the docs。祝你好运!
答案 1 :(得分:-1)
我认为你使用$ modal有点不合适。
所以你在这里有两个控制器 - 一个用于应用程序逻辑,一个用于模态窗口本身。根据最佳实践,您不应该直接在不同控制器之间进行交互(父子指令的情况是排除的,但老实说它不是直接交互 - 而是您的链接器函数使用来自父指令的控制器)。我们应该使用服务而不是控制器之间的交互。这只是附加说明。
与您的问题有什么关系 - 您有两件事要记住:
希望这会有所帮助。有关详细信息,请查看$ modal的文档:Angular Bootstrap