【发布时间】:2016-06-08 16:49:08
【问题描述】:
我想创建一个指令来包装表单元素(输入、文本区域、选择等)并绑定到 ng-model。
用法如下:
<div ng-controller="formController">
<field
type="text"
ng-model="model.CellPhoneNumber"
label="Cell phone"
mini-help="Sample: 123412341234"
required="please give us your number"
numeric
cellPhone="cell phone number is invalid" />
<div>{{ model.CellPhoneNumber }}</div>
</div>
<script>
app.cp.register('formController', ['$scope', function ($scope) {
}]);
</script>
这是我的指令:
app.directive('field', function () {
return {
restrict: 'E',
replace: 'true',
scope: false,
require: 'ngModel',
template: '<div class="field">' +
'<label ng-if="label">{{ label }}</label>' +
'<input type="text" ng-if="type == \'text\'" required ng-model="ngModel" />' +
'<span class="mini help" ng-if="miniHelp">{{ miniHelp }}</span>' +
'<span class="messages">' +
'<span class="error message" ng-message="required" ng-if="requried">{{ required }}</span>' +
'</span>' +
'</div>',
link: function (scope, element, attributes, ngModel) {
scope.label = attributes.label;
scope.miniHelp = attributes.miniHelp;
scope.type = attributes.type;
scope.required = attributes.required;
}
};
});
但是,它不起作用。我被困在绑定 ng-model 上。我知道我可以通过范围:{} 切换到子范围,并且一切正常。但我需要范围:false。
这里有一个很好的例子来说明如何做到这一点。但我找不到范围为 false 的样本。
【问题讨论】:
-
您也必须发布您的控制器和应用代码,才能正确回答
标签: angularjs angularjs-directive angularjs-scope