在我看来:
<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
};
我希望能够在提交表单时更新警告框。
所以:点击表单上的提醒按钮 然后:提交表格 然后:使用成功或失败消息更新“警报”
我认为我的范围都混淆了。不确定。
答案 0 :(得分:2)
无法看到您的所有代码,但我认为它存在多个问题,而且您对javascript中的范围界定方式缺乏基本的了解。我将尝试解释下面发生了什么,但您需要了解范围界定才能完全理解......我建议您阅读http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/以了解有关范围界定的更多信息。
首先你不需要提交函数来接受变量。当您的提交电话甚至不接受时。
$scope.submit = function($scope) {
可以......
$scope.submit = function() {
因为你像这样调用提交函数......
...ng-submit="submit()">...
此外,如果您将该输入参数命名为“$ scope”,它将覆盖原始的$ scope变量,使您无法在提交函数中访问它。
相反,您实际上可以访问$ scope变量而不实际将其传递给submit函数,因为它在控制器的范围内。基本上,控制器中的任何函数都可以访问$ scope,而无需将其作为参数传递。所以简而言之,你的代码应该是这样的......
$scope.submit = function() {
$http.post('/add', {brand: this.brand} ).success(function(data){
$scope.alert = true;
});
};