我在AngularJS中使用输入指令,并希望在其上设置最小值。我的理解是,如果输入的值低于min,则会在ngModelController上显示错误。
我创建了this plunker,其中有两项测试,如下所示:
describe("myProblem", function () {
var ctrl;
beforeEach(inject(function ($compile, $rootScope) {
var scope = $rootScope.$new();
scope.qty = 100;
var el = angular.element('<input ng-model="qty" type="number" min="0" step="1" placeholder="0" />');
$compile(el)(scope);
scope.$digest();
ctrl = el.controller("ngModel");
}));
it("should have a validation error when the entered value is below the min", function() {
expect(ctrl.$valid).toBe(true);
ctrl.$setViewValue("-1");
expect(ctrl.$valid).toBe(false);
});
it("should have an $error with key of min when entered value is below min", function() {
expect(ctrl.$error.min).toBe(false);
ctrl.$setViewValue("-1");
expect(ctrl.$error.min).toBe(true);
});
});
测试通过Chrome和IE10 +,但不是IE8和IE9(我必须支持)。
对任何能告诉我原因的人都感到荣幸吗?
答案 0 :(得分:3)
我已修好它,并认为我会在这里发布,以防其他人有用。
我需要为IE8和&amp;添加前缀。 9不知道数据 - 以确保旧的IE版本不会从DOM中删除它们。
我已经更新了插件,但基本上我更改了上面一行,看起来像下面一行:
var el = angular.element('<input ng-model="qty" data-type="number" data-min="0" step="1" placeholder="0" />');
请注意html字符串中两个属性的数据 - 前缀。