Javascript $scope在控制器中未定义
我有世界上最简单的控制器,我想访问$scope,但它是“未定义”的,我一生都无法弄明白为什么,无论所有函数如何正确调用,数据服务等都能完美工作,只是我无法访问$scope 控制器代码如下Javascript $scope在控制器中未定义,javascript,angularjs,Javascript,Angularjs,我有世界上最简单的控制器,我想访问$scope,但它是“未定义”的,我一生都无法弄明白为什么,无论所有函数如何正确调用,数据服务等都能完美工作,只是我无法访问$scope 控制器代码如下 app = angular.module("windscreens", []); app.controller('DamageCtrl', function($scope, DataService) { $scope.setDamageLocation = function(location) {
app = angular.module("windscreens", []);
app.controller('DamageCtrl', function($scope, DataService) {
$scope.setDamageLocation = function(location) {
DataService.getDamage().setLocation(location);
};
$scope.isLocation = function(requiredLocation) {
return DataService.getDamage().getLocation() === requiredLocation;
};
$scope.progress = function() {
};
});
要从HTML模板访问作用域上的属性,您只需要使用属性名称,而不需要使用它编写$scope 例如:
<button ng-click="progress()"></button>
在javascript中,您只能访问控制器内的$scope及其函数。如果调用外部资源,例如:DataService模块,则除非您将其作为参数显式传递,否则它将无法访问$scope。我使用替代语法使其正常工作。如下所述,仍然不确定它为什么不起作用,但嘿哼
app.controller('DamageCtrl', ['$scope', 'DataService',
function($scope, DataService) {
$scope.setDamageLocation = function(location) {
DataService.getDamage().setLocation(location);
};
$scope.isLocation = function(requiredLocation) {
return DataService.getDamage().getLocation() === requiredLocation;
};
$scope.progress = function() {
console.log($scope);
};
}
]);
当
$scope
未定义时,您如何声明数据服务
正在工作?在您的代码中,错误发生在哪里?目前还没有错误,我正在尝试找出如何使函数“progress”工作,并查看了“$scope”是什么,未定义的是什么-数据服务在前端工作,触发setLocation的是什么,消耗isLocation的是100%按预期工作的您“看”了什么位于$scope
。我想你的问题就在那里。在setLocation函数中使用断点,然后使用控制台只执行“$scope”,控制台就是控制台。它不会进入脚本所在的范围。通过设置断点并查看浏览器提供的调试信息,可以检查$scope
引用的值。我使用GoogleChrome进行调试,它将在右边的面板中显示信息,所有变量都按作用域分类。这种方法是为了保护插入的参数不受代码压缩器的影响。你的代码被压缩了吗?不,我们还在开发阶段,我们在测试之前不会缩小-我不知道为什么它不起作用,但现在它已经起作用了,事实上,正如你所说的那样,这种方式更好,因为它允许完全缩小!