请帮助解决问题。
是一种形式: jsfiddle
controller具有以下变量:
briefApp.controller("briefController", function ($scope) {
$scope.flagSize = true;
$scope.flagExt = true;
})
指令改变这些变量:
briefApp.directive('attachmentValidate', function() {
return {
link: function($scope, element, attrs, ctrl) {
$scope.flagSize = flagSize;
$scope.flagExt = flagExt;
});
}
};
});
问题是没有显示错误消息:
<span class="error" ng-hide="flagSize">Размер файла превышен</span>
<span class="error" ng-hide="flagExt">Неверный формат файла</span>
答案 0 :(得分:1)
您需要将范围变量更新操作包装在scope.$evalAsync
中,因为您要从元素的'change'事件更新范围。从事件更新范围变量不会自动运行摘要周期,您需要手动运行它以使用$scope.$evalAsync()
/ $scope.$apply()
/ $timeout()
函数更新范围绑定。其中$scope.$evalAsync()
是最安全的方法,调用此方法永远不会与当前正在运行的任何摘要周期冲突。
<强> CODE 强>
$scope.$evalAsync(function(){
$scope.flagSize = flagSize;
scope.flagExt = flagExt;
});