2015-06-24 5 views
1

ng-show = "my.message" имеет значение true в http-успехе, но не обновляет представление.ng-show не обновляет вид

Вот мой код:

контроллер Js:

lgControllers.controller('FormCtrl', function($scope, $http) { 

       $scope.my = { 
        message: false 
       }; 
       $scope.submitForm = function() {      

        $http({ 
         url: "../saket/ajax.php", 
         data: "email_id=" + $scope.form.emailaddress + "&category_id=" + cat_num + "&action=subscribe", 
         method: 'POST', 
         headers: { 
          'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 
         } 
        }).success(function(data) { 

          $scope.my = { 
           message: true 
          }; 

         console.log(data); // http is success 
         console.log($scope.my.message); // gives true 

        }).error(function(err) { 
         "ERR", console.log(err) 
        }) 
       }; 

      }); 

Index.html:

<div ng-controller="FormCtrl"> 
     <div ng-show="my.message">It worked!</div> 
    </div> 

my.message дает верно в консоли, но DIV остается скрытым в представлении.

Я не могу понять, где проблема.

+0

Он должен работать, вы можете воспроизвести в Fiddle? template: http: //jsfiddle.net/65yyf23x/ –

+0

Попробуйте добавить вызов в $ scope. $ apply() в конце вашего обратного вызова –

+0

@KK: Он дает эту ошибку Ошибка: [$ rootScope: inprog] –

ответ

0

Может быть, вы переписываете свойство message, а angularjs теряете ссылку?

$scope.my = { 
    message: true 
; 

попробовать просто:

$scope.my.message = true; 
+0

@essdil Это не проблема. Пробовал это всего лишь $ scope.message –

+0

да, вы правы. Он должен работать с ним ... Я создал скрипку, где он отлично работает ... может быть, это помогает: https://jsfiddle.net/cfdb6gxq/ – eesdil