角度输入指令在IE8和IE9中未按预期工作

时间:2014-09-03 15:51:24

标签: javascript angularjs internet-explorer internet-explorer-8

我在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(我必须支持)。

对任何能告诉我原因的人都感到荣幸吗?

1 个答案:

答案 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字符串中两个属性的数据 - 前缀。