2016-06-29 1 views
0

У меня есть директива в угловом «spyStyle» И я хотел бы сделать ее максимально удобной. Итак ... Я хотел бы иметь возможность вызывать различные функции обратного вызова в зависимости от того, что просматривается.AngularJs Как изменить функцию CallBack на основе Watch Value

Вот мой код

.directive('spyStyle', [function() { 
     return { 
      link: function (scope, element, attrs) { 
       scope.$watch(function() { 
        return element.css(attrs['spyAttribute']); 
       }, styleChangedCallBack, true); 

       function styleChangedCallBack(newValue, oldValue) { 
        if (newValue !== oldValue) { 
         // do something interesting here 
        } 
       } 
      } 
     }; 

    }]); 
+0

Передайте в просматриваемое значение, передайте обратный вызов. – tymeJV

+0

спасибо tymeJV, от того, как я решил это ниже, является ли это правильным способом обработки вещей? Кажется, мне не нужно писать всю область. $ Watch statement дважды только для вызова отдельной функции обратного вызова Не могу ли я просто установить переменную, какую функцию обратного вызова использовать и передать ее команде $ scope.watch? Потому что, когда я пробовал это, я получил ошибку. – Acts7Seven

ответ

0

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

   if ((attrs['spyAttribute']) = 'background-color') { 
        alert("background-color"); 
        scope.$watch(function() { 
         element.css('color', 'black'); 
         return element.css(attrs['spyAttribute']); 
        }, bgStyleChangedCallBack, true); 
       } else { 
        alert("something else"); 
        scope.$watch(function() { 
         //element.css('color', 'black'); 
         return element.css(attrs['spyAttribute']); 
        }, styleChangedCallBack, true); 
       } 

Вот полный код https://jsfiddle.net/acts7/5Ls46ebx/

Полная директива проверяет цвет фона элемента и изменения текста, чтобы стать читаемым. Затем он проверяет, меняется ли цвет фона, и при необходимости применяет новый цвет текста.