我正在使用AngularJS和UniformJS构建应用程序。我想在 View 上有一个重置按钮,将我的选择重置为其默认值。如果我使用uniform.js,它将无法正常工作。
您可以在此处进行检查:
http://plnkr.co/edit/QYZRzlRf1qqAYgi8VbO6?p=preview
如果连续单击“重置”按钮,则不会发生任何事情。
如果删除该属性,因此不再使用Uniform.js,则一切正常。
谢谢
更新:
需要使用超时。
app.controller('MainCtrl', function($scope, $timeout) {
$scope.reset = function() {
$scope.test = "";
$timeout(jQuery.uniform.update, 0);
};
});
最佳答案
找到了。为了完整起见,我在这里复制我的评论:
看来Uniform确实很hacky。它掩盖了实际的选择元素,并显示了span。 Angular正在工作。实际选择元素的值正在更改,但是Uniform显示的跨度没有更改。
因此,您需要告诉Uniform您的值已使用jQuery.uniform.update
进行了更改。 Uniform会从实际元素中读取值以放置在跨度中,而angular直到摘要循环之后才更新实际元素,因此您需要稍等一会儿再调用update:
app.controller('MainCtrl', function($scope, $timeout) {
$scope.reset = function() {
$scope.test = "";
$timeout(jQuery.uniform.update, 0);
};
});
或者,您可以将其放在指令中:
app.directive('applyUniform',function($timeout){
return {
restrict:'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
element.uniform({useID: false});
scope.$watch(function() {return ngModel.$modelValue}, function() {
$timeout(jQuery.uniform.update, 0);
} );
}
};
});
关于AngularJS UniformJS选择控件未更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18215366/