Angularjs 如何在自定义指令中传递ng*属性?
我创建了一个自定义的bs input指令,它将输入字段包装到引导模板中。如果我填写所有属性类型、最大长度、必填项、模式等,它可以正常工作。但是Angularjs 如何在自定义指令中传递ng*属性?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我创建了一个自定义的bs input指令,它将输入字段包装到引导模板中。如果我填写所有属性类型、最大长度、必填项、模式等,它可以正常工作。但是 <bs-input ng-model="something"> 不起作用。由于maxlength验证和ng模式验证(例如,没有regexp),该字段被视为无效。如何将未定义的变量传递给输入标记,或者如果它们没有值,如何有条件地排除它们 这是我的指示: mod.directive('bsInput', function() { retur
<bs-input ng-model="something">
不起作用。由于maxlength验证和ng模式验证(例如,没有regexp),该字段被视为无效。如何将未定义的变量传递给输入标记,或者如果它们没有值,如何有条件地排除它们
这是我的指示:
mod.directive('bsInput', function() {
return {
restrict: 'A',
require: '^form',
template: '
<div ng-form="innerForm" class="form-group" ng-class="getFieldClass()">
<label class="control-label" ng-class="{\'col-sm-5\': eVertical }" for="field">{{ eLabel | tt }}</label>
<div ng-class="{\'col-sm-7\': eVertical }">
<input type="{{ type }}" class="form-control" name="field"
ng-model="ngModel" ng-maxlength="eMaxlength" ng-required="eRequired"
ng-disabled="eDisabled" ng-pattern="ePattern"
placeholder="{{ePlaceholder}}">
<p class="help-block" ng-show="eHelp">{{eHelp}}</p>
</div>
</div>',
scope: {
ngModel: "=",
eLabel: "@",
type: "@",
eMaxlength: "@",
eRequired: '=',
ePattern: '@',
eVertical: '=',
eDisabled: '=',
ePlaceholder: '@',
eHelp: '@'
}
};
});
您应该在指令中定义属性是可选的。e、 g
scope: {
ngModel: "=",
eLabel: "@",
type: "@",
eMaxlength: "@?", <---------
eRequired: '=',
ePattern: '@',
eVertical: '=',
eDisabled: '=',
ePlaceholder: '@',
eHelp: '@'
}
我认为您可以尝试在JSFIDLE或plnkr上提供代码,最好有人修改它。
link : function(scope, elem, attrs) {
if (scope.eMaxLength === undefined) {
scope.eMaxLength = '';
}
}