我有很多令人头疼的事情试图让$ watch在表单元素上的事件之前执行(复选框更精确)。唯一可用的浏览器是FF。
scope.$watch(attrs.ngModel, function($v){
console.log("1 = "+$v);
});
// elem corresponds to the element in form (i.e.: checkbox)
elem.bind('change', function(evt){
console.log("2 = "+control.$modelValue);
scope.$digest();
});
有没有办法在所有浏览器中执行此操作?
答案 0 :(得分:1)
事件(允许操作),因此如果要在渲染后使用字段中的值,可以使用$timeout
。
例如,检查指令中的表单字段是否为脏...
elm.bind('keydown', function(event) {
if (event.which === 13)
scope.update();
scope.check_dirty();
});
scope.check_dirty = function() {
// wait for the DOM to finish rendering
$timeout(function() {
if ( elm.val().trim() !== scope.last_saved_value )
elm.addClass('calc-dirty-input');
else
elm.removeClass('calc-dirty-input');
},0);
};
...