我试图从容器中获取一个值,该容器在其值的变化时触发$ scope。$ watch启动另一个函数。我只能得到上面的错误,即使我可以确认它正在检索正确的值。
我怀疑是$watch
在颜色变量有机会初始化之前加载。
我的AngularJS脚本:
'use strict';
angular.module('careApp.tMain', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/tMain', {
templateUrl: './templates/tMain.html',
controller: 'tMainCtrl'
});
}])
.controller('tMainCtrl', function($scope, $http) {
$scope.dimmer = 100;
$scope.color = '#c24747';
$scope.$watch('color', function(){
console.log('Color has changed to ' + $scope.color);
hexToRGB($scope.color);
})
});
$watch
函数监视以下HTML代码块:
<div>
<!-- $watch looks for changes here-->
<ng-farbtastic ng-model="color"></ng-farbtastic>
<md-input-container class="hide">
<label>Color</label>
<!-- Curly brace 'color' variable from farbtastic.js code -->
<input type="text" value="{{color}}">
</md-input-container>
</div>
我需要做些什么才能纠正此错误?
答案 0 :(得分:1)
首先从您的html中删除readonly
和value
属性。
<md-input-container class="hide">
<label>Color</label>
<input type="text" ng-model='color'>
</md-input-container>
现在在您的控制器中,当您的页面中的ng-model发生更改时,$scope.color
的值应该已自动更新。
如果你想使用$ watch功能,那么它就是。
$scope.$watch(function()
{
return $scope.color
},
function(newVal,oldVal){
if (oldVal!==newVal){
console.log('Color has changed to ' + newVal);
hexToRGB(newVal);
}
});