我需要绑定类型'数字'的输入。使用不同的字符串模型。我设法使用如下指令绑定它们:
app.directive('input', function () {
return {
restrict: 'E',
require: 'ngModel',
priority:999999,
link: function (scope, elem, attrs, ctrl) {
//Check del tipo input
if (attrs.type.toLowerCase() !== 'number')
{
return;
}
//Paso a numero el valor a colocar
ctrl.$formatters.push(function (value)
{
return value ? parseFloat(value) : null;
});
}
};
});
HTML就像这样:
<input class="form-control" type="number" ng-model="scopeValue" />
到此为止,绑定没有问题。但是,当我写一个ng-repeat和ng-switch组合时,这个指令没有被执行。示例代码:
<div ng-repeat="attribute in attributes" ng-switch on="attribute.type">
<div class="input-group">
<span class="input-group-addon" id="basic-addon2">{{attribute.label}}</span>
<input class="form-control" ng-switch-when="text" ng-model="attribute.value" type="text" name="{{attribute.label}}" value="{{attribute.value}}">
<input class="form-control" ng-switch-when="number" ng-model="attribute.value" type="number" name="{{attribute.label}}" value="{{attribute.value}}">
</div>
</div>
这里永远不会抛出指令链接代码,并且永远不会完成带数字的输入。据我所知,该指令检查所有输入并具有ngModel依赖性。为什么它从未被执行过?