как я могу использовать цветовой код в переменной String и связать эту переменную с выражением $ watch?
$scope.$watch($scope.backgroundTextColor, function(){
// code inside function
});
С примером кода я получаю следующую ошибку:
"Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 0-0 [#] in expression [#9c5c5c]...
Вы передаете значение $scope.backgroundTextColor
Вам нужно передать имя переменной, например
$scope.$watch('backgroundTextColor', function(newValue, oldValue){
// code inside function
});
Посмотрите, как реагировать на изменения сферы охвата
Здесь вы пытаетесь использовать магическую строку.
Функция $watch
в Angular может либо взять функцию, которая возвращает значение, которое вы хотите просмотреть, или строку, которая ссылается на переменную, которую вы хотите посмотреть (волшебная строка).
Строка будет ссылаться на переменную, как если бы вы были в HTML. Поэтому, если вы используете $scope
(который, как вам кажется, вам нужен), вам нужно:
$scope.$watch('backgroundTextColor', function(newValue, oldValue){
// code inside function
});
Если у вас есть набор псевдонимов (например, с помощью ControllerAs
) для контроллера, вам нужно будет указать, что:
$scope.$watch('ctrl.backgroundTextColor', function(newValue, oldValue){
// code inside function
});
В противном случае вы можете использовать функцию:
$scope.$watch(function() {
return $scope.backgroundTextColor;
}, function(newValue, oldValue){
// code inside function
});
Вместо того, чтобы поместить переменную как есть в выражении $watch
, попробуйте вернуть значение переменной:
$scope.$watch(function() { return $scope.backgroundTextColor }, function() {
// code inside function
});
Я предпочитаю использовать только переменную, а не ее строковое представление HTML (backgroundTextColor
), таким образом, вы более агностичны для представления.
// code inside function
?