如何获取 Webshim 的 updatePolyfill 调用由 Angular "ng-if" 添加的元素
How to get Webshim's updatePolyfill called for elements added by an Angular "ng-if"
我有一个 Angular 应用程序,添加了 Webshim 主要是为了在旧版浏览器中添加日期选择器。我正在使用这个:
$scope.$on('$viewContentLoaded', function(target) {
setTimeout(function() {
$('#partials').updatePolyfill();
}, 0);
});
在视图更改时更新 DOM。
但我有几个内部包含部分的页面,其中 ng-if
用于显示某些字段(如果某些其他字段处于特定状态),并且这些部分不在 DOM 中"$viewContentLoaded" 碰巧没有添加 polyfill。 ng-if
逻辑是由模型更改驱动的,因此如果有某种方法可以生成 "afterAllModelChanges" 事件,那么理想的情况是可以使用上述技术,而不管特定的 ng-if
逻辑如何现在。
在吗?或者有没有更好的方法来解决这个问题?
经过几个小时的谷歌搜索和试验,这就是我的最终结果。我的索引页中有这个:
$.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,因此适用于已变为 true 的 ng-if
以及加载视图时。
我有一个 Angular 应用程序,添加了 Webshim 主要是为了在旧版浏览器中添加日期选择器。我正在使用这个:
$scope.$on('$viewContentLoaded', function(target) {
setTimeout(function() {
$('#partials').updatePolyfill();
}, 0);
});
在视图更改时更新 DOM。
但我有几个内部包含部分的页面,其中 ng-if
用于显示某些字段(如果某些其他字段处于特定状态),并且这些部分不在 DOM 中"$viewContentLoaded" 碰巧没有添加 polyfill。 ng-if
逻辑是由模型更改驱动的,因此如果有某种方法可以生成 "afterAllModelChanges" 事件,那么理想的情况是可以使用上述技术,而不管特定的 ng-if
逻辑如何现在。
在吗?或者有没有更好的方法来解决这个问题?
经过几个小时的谷歌搜索和试验,这就是我的最终结果。我的索引页中有这个:
$.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,因此适用于已变为 true 的 ng-if
以及加载视图时。