угловой объем не обновляется в наблюдателе - PullRequest
0 голосов
/ 15 мая 2018

У меня есть часы, и в этих часах я проверяю некоторые значения, а затем обновляю другие.Это мой код

 scope.$watch(function () {
 return userfactory.getUser();
 }, function (newValue, oldValue) {
 if (newValue.User) {


     scope.domainuser = newValue.User.DomainUser;
     scope.isGuardian = scope.domainuser.Category === 'Guardian';

     if (scope.isGuardian && scope.mymessage !== undefined) {
         angular.forEach(newValue.User.DependantUsers, function (value, key) {
             if (scope.mymessage.OnBehalfOf === value.DomainUser.UserName) {
                 scope.mymessage.backGround = globalColorsArray[key];

                 console.log(scope.mymessage);

             }


         });
     }
 }
 });

mymessage передается от того места, где вызывается директива.Если у меня есть функция, скажем, кнопка щелчка, и если я обновлю значение, она обновит ее.

Странно, что в журнале консоли есть обновленное свойство.Но на шаблоне это не получается.

В моем шаблоне много вещей, но проблема здесь

<span class="parent-child-color-scheme" ng-show="isGuardian" ng-class="mymessage.backGround"></span>

Очевидно, что если я пытаюсь обновить какое-либо свойство, оно не работает внутри часов.Это не вступает в силу.

Это то, что я имею в директиве

return {
        restrict: 'E',
        scope: {
            mymessage: "=message",
            frontpage: "=",
            inbox: "="
        }, controller: function ($scope) {

1 Ответ

0 голосов
/ 15 мая 2018

Оказалось, что ваш scope внутри функции watch имел в виду не то, что шаблон.

Если вы используете полный список параметров функции слушателя часов (как объяснено здесь), вы можете убедиться, что используется правильная область:

scope.$watch(function () {
  return userfactory.getUser();
}, function (newValue, oldValue, scope) {
  ...

Чтобы избежать затенения с вашим именем параметра, вы можете даже использовать другое имя, например:

}, function (newValue, oldValue, wScope) {
  ...
  wScope.mymessage.backGround = globalColorsArray[key];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...