Javascript 无法从Angular JS中的控制器函数中访问$scope变量
我认为:Javascript 无法从Angular JS中的控制器函数中访问$scope变量,javascript,ruby-on-rails,ruby,scope,Javascript,Ruby On Rails,Ruby,Scope,我认为: <div ng-controller="formCtrl"> <div class="alert alert-success" ng-show={{alert}}>"hey"</div> </div> “嘿” 我的表格: <form name="myForm" ng-controller="formCtrl" ng-submit="submit()">... 。。。 在我的控制器formCtrl上,我有:
<div ng-controller="formCtrl">
<div class="alert alert-success" ng-show={{alert}}>"hey"</div>
</div>
“嘿”
我的表格:
<form name="myForm" ng-controller="formCtrl" ng-submit="submit()">...
。。。
在我的控制器formCtrl上,我有:
$scope.submit = function($scope) {
$http.post('/add', {brand: this.brand} ).success(function(data){
this.alert = true;
});
//this.alert(true); <-- also tried, did not work
};
$scope.submit=函数($scope){
$http.post('/add',{brand:this.brand}).success(函数(数据){
this.alert=true;
});
//this.alert(true);无法查看您的所有代码,但我认为它存在多个问题,并且您对javascript中的作用域如何工作缺乏基本的了解。我将尝试在下面解释发生了什么,但您需要了解作用域才能完全理解……我建议您阅读以了解更多有关作用域的信息
首先,您不需要使用submit函数来接受变量。当您的submit调用甚至不接受变量时
$scope.submit = function($scope) {
可能是
$scope.submit = function() {
因为你像这样调用提交函数
...ng-submit="submit()">...
$scope.submit = function() {
$http.post('/add', {brand: this.brand} ).success(function(data){
$scope.alert = true;
});
};
此外,如果将该输入参数命名为“$scope”,它将覆盖原始$scope变量,从而使您无法在提交函数中访问它
相反,您可以实际访问$scope变量,而无需实际将其传递到submit函数,因为它在控制器的作用域内。基本上,控制器中的任何函数都可以访问$scope,而无需将其作为参数传递。因此简言之,您的代码应该如下所示
...ng-submit="submit()">...
$scope.submit = function() {
$http.post('/add', {brand: this.brand} ).success(function(data){
$scope.alert = true;
});
};