Angular $scope variable not updating

后端 未结 6 1456
一整个雨季
一整个雨季 2021-01-02 04:19

In my angular, I define a scope variable $scope.letter_content. When the view is loaded, I load string from my database and set it to $scope.letter_conten

相关标签:
6条回答
  • 2021-01-02 04:36

    Actually this has been discussed in more links.

    Don't use primitive type variable. Instead of that use object in scope.

    For example, Don't use like $scope.primitiveVariale instead of this $scope.object={primitiveVariale:null}

    So in view use like object.primitiveVariale then this will be reflect in all the view. Please see the following links.

    https://github.com/angular/angular.js/wiki/Understanding-Scopes

    0 讨论(0)
  • 2021-01-02 04:44

    The ng-if directive create a new scope, so the letter_content inside the div is in the ng-if scope, but the letter_content outside is in the controller scope.

    Read the API doc to know which directive create new scope.

    To avoid this kind of problem consider using the controllerAs syntax

    0 讨论(0)
  • 2021-01-02 04:44

    Try this -

     $scope.object = {letter_content:null};
    
      {{object .letter_content}}
        <div ng-if="formData['page_number'] == 1 ">
            {{letter_content}}
            <textarea id="froala-sample-2" froala="froalaOptions" ng-model="object .letter_content"></textarea>
        </div>
    
    0 讨论(0)
  • 2021-01-02 04:47

    I had very similar but even weirder problem where I was updating one of my scope variables using the response from an HTTP call, surprisingly, my view will not update unless I make another HTTP call and by another I mean any other random HTTP call.

    Using the $apply worked for me,

    $scope.$apply(function () {
         $scope.resultData.totalResults = response.data.total;
    });
    
    0 讨论(0)
  • 2021-01-02 04:47

    can you ever heard of angular's dot notation?

    solution

    put letter_content in an object. froalaDetails.letter_content for example. then update that value and everything should work exactly like you want.

    explanation

    watch this very short video to get the full details: https://egghead.io/lessons/angularjs-the-dot

    0 讨论(0)
  • 2021-01-02 04:50

    Do not use plain values like this, you need to put such values into an object, so try in your controller:

    $scope.obj = { letter_content: null};
    

    and then in your view:

    {{obj.letter_content}}
    
    0 讨论(0)
提交回复
热议问题