如何让Webshim的updatePolyfill调用由Angular" ng-if"添加的元素。

时间:2015-06-10 13:26:53

标签: angularjs webshim

我有一个带Webshim的Angular应用程序,主要是为了在旧浏览器中添加日期选择器。我用这个:

$scope.$on('$viewContentLoaded', function(target) {
    setTimeout(function() {
        $('#partials').updatePolyfill();
    }, 0);
});

在视图更改时更新DOM。

但我有几个页面内部包含部分,其中ng-if用于显示某些字段,如果某些其他字段处于特定状态,并且当" $时这些部分不在DOM中viewContentLoaded"如果没有添加polyfill。 ng-if逻辑是由模型变化驱动的,所以理想的是,如果有某种方法来生成" afterAllModelChanges"事件因此可以使用上述技术,而不管存在的具体ng-if逻辑。

有吗?或者有更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

经过几个小时的谷歌搜索和实验,这就是我最终的结果。我在索引页面中有这个:

$.webshims.polyfill('es5 forms forms-ext');

并将此指令添加到我的项目中:

eepDirectives.directive('input', function() {
    return {
        restrict: 'E',
        priority: -1,
        link: function(scope, element, attrs) {
            if (attrs.type == 'date') {
                // Doesn't appear to need a setTimeout when used like this
                $(element).updatePolyfill();
            }
        }
    };
});

我只对<input type="date" .../>字段感兴趣,因此该指令仅限于input元素,然后针对该类型进一步过滤。

这会更新polfill,但输入字段会添加到DOM中,因此适用于已加载视图的ng-if