我为输入创建了一个自定义指令。
在HTML内部,它使用如下:
<my-input class="input-text"
type="number"
ng-model="modelVariable"
ng-readonly="false" />
现在在指令myInput.js中我有这样的东西:
var myInputDirective = (function() {
directives.directive('myInput', [function() {
return {
restrict: 'E',
transclude: 'element',
replace: true,
require: 'ngModel',
templateUrl: 'app/templates/common/myInput.tpl.html',
scope: {
ngModel: '=',
ngReadonly: '='
},
link: function($scope, $element, $attr, ngModelController) {
$scope.$watch('ngModel', function(newValue, oldValue) {
if (newValue != oldValue && newValue !== undefined && newValue !== null) {
$scope.ngReadonly = isReadOnly($attr.ngModel);
}
});
然而,尽管这会将$ scope.ngReadonly设置为true - 该字段仍然不是只读 - 我很困惑为什么不这样做。
答案 0 :(得分:0)
您必须在指令的视图中添加tempalte set ng-readonly
等于父范围作为input
元素的属性之一。
就像这样:
return {
//..the other properties
scope: {
ngModel: '=',
ngReadonly: '=readOnly'
}
然后在myInput.tpl.html
找到您的input element
并添加此内容:
<input ng-readonly="readOnly">