通过解析器传递值时,角度$scope不更新
Angular $scope not updating when passing value through parser
请注意,即使通过验证的值也不会通过解析器使其完整。解析器返回正确的值,但是当格式化程序被调用时,旧值仍然存在于模型中。有人可以向我解释一下吗?
这是 plnkr
http://plnkr.co/edit/uSLkKtLZIU63wRou3x8V?p=preview
和代码
angular.module('timeEntryModule', []).directive('timeEntryTotalHoursInput', function() {
return {
require: '^ngModel',
link: function($scope, $element, $attrs, ngModel) {
ngModel.$formatters.push(function (modelValue) {
if (modelValue === 0) {
return undefined;
} else {
return modelValue.toFixed(2);
}
});
ngModel.$parsers.push(function (viewValue) {
var tempVal = parseFloat(viewValue);
if (tempVal) {
ngModel.$setValidity('timeEntryInputError', true);
ngModel.$modelValue = tempVal;
} else {
ngModel.$setValidity('timeEntryInputError', false);
ngModel.$modelValue = undefined;
}
return ngModel.$modelValue;
});
}
};
});
angular.module('timeEntryModule').controller('TimeEntryCtrl', ['$scope', function ($scope) {
$scope.testproperty = 2;
}]);
<!doctype html>
<html ng-app="timeEntryModule">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-controller="TimeEntryCtrl">
<input ng-model="testproperty" time-entry-total-hours-input />
</body>
</html>
提前感谢!
所以我玩了你的 plnkr,我认为你会更好地响应模糊事件,这是我很快想到的普罗提
我认为在这种情况下,您可以更好地控制事情。
相关文章:
- $scope和$routeParams的角度问题
- Json和$scope的角度之间的差异$eval应用于JSON字符串时
- 角度:当输入更改时更新视图 + .this/$scope
- 工厂返回数据后未设置角度$scope
- 角度$scope在IE10中不刷新
- $scope之后未更新角度范围$在$broadcast之后的事件上
- 表单提交中未定义角度$scope
- 角度$scope在 HTML 中未显示正确的数据
- 角度$scope变量未显示在引导模式初始化上
- 分页角度$scope变量是未定义的
- 向 parse.com 发送数据并更新角度$scope
- 角度$scope首先设置值而不是服务,然后第二个函数调用一切正常
- 当我将$scope分配给另一个变量并更改新变量上的监视值时,不会触发角度 $scope.$watch
- 角度$scope值以相反的顺序设置
- 当角度$scope发生变化时,不要更新 HTML
- 通过解析器传递值时,角度$scope不更新
- 从角度$scope承诺中删除一行
- 角度$Scope解构模式错误
- 角度$scope值不会显示在页面上
- 动态更改角度$scope变量