我有一个带Webshim的Angular应用程序,主要是为了在旧浏览器中添加日期选择器。我用这个:
$scope.$on('$viewContentLoaded', function(target) {
setTimeout(function() {
$('#partials').updatePolyfill();
}, 0);
});
在视图更改时更新DOM。
但我有几个页面内部包含部分,其中ng-if
用于显示某些字段,如果某些其他字段处于特定状态,并且当" $时这些部分不在DOM中viewContentLoaded"如果没有添加polyfill。 ng-if
逻辑是由模型变化驱动的,所以理想的是,如果有某种方法来生成" afterAllModelChanges"事件因此可以使用上述技术,而不管存在的具体ng-if
逻辑。
有吗?或者有更好的方法来解决这个问题吗?
答案 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
。