Angularjs 未定义的角推
无法调用未定义的方法“push” 当我的AngularJS运行以下命令时,我收到该错误:Angularjs 未定义的角推,angularjs,angularjs-scope,Angularjs,Angularjs Scope,无法调用未定义的方法“push” 当我的AngularJS运行以下命令时,我收到该错误: $scope.ok = function () { $modalInstance.close(); $scope.key.push({ title: '', gps:'', desc:''}); }; 我声明了我的$scope.key=[]就在我的.controller之后,因为我需要能够在应用程序的其他部分中使用$scope.key。有人能指出我应该在哪里申报吗 $scope.ok是我的
$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);
};
}]);
不要忘记将作用域传递给
$modal。打开!如果不这样做,它将默认为根作用域,而根作用域不是控制器作用域的子作用域,因此未在其上或其父作用域上定义key
。您可以使用{scope:$scope.$new(),…}
作为$model.open
的参数来传递控制器作用域的子级。有关详细信息,请参阅。祝你好运 我认为您使用$modal有点不当
这里有两个控制器——一个用于应用程序逻辑,另一个用于模式窗口本身。根据最佳实践,您不应该在不同的控制器之间直接交互(父-子指令的情况是排除,但老实说,它不是直接交互-而是您的链接器函数使用了来自父指令的控制器)。通常,我们应该使用服务,而不是控制器之间的交互。这只是附加说明
与您的问题相关的是什么?您需要记住两件事:
- 如果要将信息从控制器传递到模态窗口,则应使用resolve属性,该属性实际上指定了多个函数,这些函数被调用以获取数据,然后作为函数参数注入模态窗口控制器。这样,您可以从主控制器传递一些数据
- 如果您需要传回结果,您应该使用模态实例的result属性,这是承诺(通过使用$modalInstance.result.then(function(result){…};)来从模态传递此对象,您可以将其作为参数关闭:$modalInstance.close(result)李>
希望这有帮助。有关更多详细信息,请参阅$model:$scope(from function参数)的文档,它将$scope从外部函数隐藏起来