2014-01-29 6 views
1

с точки зрения у меня есть:

<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 
    }; 

Я хочу иметь возможность обновлять окно оповещения при отправке формы.

Итак: нажмите кнопку оповещения о форме то: форма отправлена ​​ тогда: «тревога» обновляется либо успеха или неудачи сообщения

Я думаю, что осциллографы все вперемешку. Не уверен.

ответ

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 без необходимости передавать ее в качестве параметра. Короче говоря, ваш код должен выглядеть так ...

$scope.submit = function() { 

    $http.post('/add', {brand: this.brand}).success(function(data){ 
     $scope.alert = true; 
     }); 
    }; 
Смежные вопросы