【发布时间】:2014-09-05 09:21:25
【问题描述】:
我目前正在尝试创建一个自定义指令,该指令将使用以下库初始化输入:intl-tel-input。
所以我用 bower 下载了所需的 .js 文件:
<script src="bower_components/intl-tel-input/build/js/intlTelInput.min.js"></script>
然后我创建我的输入:
input type="tel" class="form-control" id="tel" name="tel" ng-model="informations.tel" ng-keyup="checkPhoneFormat()" ng-click="checkPhoneFormat()">
我在控制器的开头初始化它,如下所示:
angular.element('#tel).intlTelInput({
validationScript: "../../bower_components/intl-tel-input/lib/libphonenumber/build/isValidNumber.js",
preferredCountries: ['en', 'fr']
});
我的问题是,当我尝试访问 informations.telmodel 时,它总是未定义。似乎输入不会即时更新模型值。
所以我必须写这样的东西来将我的输入字段的实际值与我未更新的模型值绑定:
$scope.checkPhoneFormat = function(){
$scope.informations.telephone = angular.element('#telephone').val();
...}
可能没问题,但我想创建一个自定义指令来初始化此类输入,例如:
app.directive('phoneInput', function (PhoneFactory) {
return {
require: 'ngModel',
restrict: 'A',
scope: {
phoneNumber: '='
},
link: function (scope, element, attrs, ctrl) {
element.intlTelInput({
validationScript: "../../bower_components/intl-tel-input/lib/libphonenumber/build/isValidNumber.js",
preferredCountries: ['en', 'fr']
});
ctrl.$parsers.unshift(function(viewValue) {
console.log(viewValue);
});
}
};
});
但由于 ngModel 未定义,因此永远无法达到初始化函数...您知道如何解决我的问题吗?
【问题讨论】:
-
你能提供一个小提琴吗?