【发布时间】:2015-03-21 14:47:03
【问题描述】:
我正在使用一个名为 jquery masked input 的插件。 http://digitalbush.com/projects/masked-input-plugin/
用于屏蔽cell phone 和ssn 如下:
<script type="text/javascript">
$('.mask-ssn').mask('999-99-9999');
$('.mask-phone').mask("(999) 999-9999");
</script>
我有一个 Angular 应用程序,它通过 ng-include 加载表单
<div class="myForm" data-ng-include="'/templates/_form.html'"></div>
而_form.html的简化内容如下:
<div class="form-group">
<input
class="form-control mask-phone"
type="text"
placeholder="Cell Phone"
name="cell_phone"
required
data-ng-pattern="user.phone_number_regex"
data-ng-model="user.formData.cell_phone"/>
<div class="help-block">...</div>
</div>
如果我只是将 _form.html 内容粘贴到父页面中,一切都会正常工作,并且 jquery 屏蔽输入将应用于 html。
不幸的是,由于 _form.html 正在异步加载,jquery 屏蔽输入插件不起作用。
寻找一些关于*最佳实践/自以为是的*方法将掩码应用于 html 的建议。不知道是否沿着将 $scope 注入我的角度控制器然后使用 $scope.apply 的路线。或者通过创建指令/或替代解决方案?
【问题讨论】:
-
您可以使用 grunt-angular-templates 添加到 $templateCache,而不是从 http 请求加载 (_form.html)。通常,我将 jQuery 调用包装在 setTimeout 中,因为大多数都可以在角度摘要之外执行,但这只是我的意见。
标签: jquery angularjs asynchronous angularjs-directive angularjs-scope