所以我想要的是传递输入的maxlength属性的变量
<input my-dir="maxLenght" id="inputScannedCode"
type="text" ng-model="ScannedCode" maxlength="20"
class="form-control orange-shadow"
required placeholder=" Scan the code " />
所以我希望输入的长度从常量设置以保持一致性。
所以我创建了一个自定义指令,以便更改maxlength值。
.directive('myDir', function () {
return {
restrict: 'A',
scope: {
myDir: '='
},
template: '<div>{{myindex}}</div>',
link: function (scope, element, attrs) {
//console.log(attrs);
//attrs.maxlength = scope.myDir.toString();
//attrs.placeholder = scope.myDir.toString();
}
};
})
确实这会改变我的maxlength值,但它会在编译后发生,但是当我检查我的元素时,它仍会显示maxlengh =&#34; 20&#34;。
任何想法我需要做什么?
答案 0 :(得分:1)
使用插值:
<input my-dir="maxLenght" id="inputScannedCode"
type="text" ng-model="ScannedCode"
maxlength="{{maxLenght || '20'}}"
class="form-control orange-shadow"
required placeholder=" Scan the code " />
$ compile服务将创建一个观察程序,每次Angular表达式更改时都会更新maxlength属性。
答案 1 :(得分:0)
您可能需要在链接函数中使用scope.eval对其进行编译,以便在您在链接函数中使用它时检索您的值
attrs.myDir = scope。$ eval(attrs.myDir);`
你永远不会在输入上设置maxLength属性:你可以使用ng-maxlength:{angular documentation)这是它不更新的主要原因
<input my-dir="maxLenght" ng-maxlength="maxLength" id="inputScannedCode" type="text" ng-model="ScannedCode" class="form-control orange-shadow" required placeholder=" Scan the code " />
在你的例子中,你也拼写错误&#34; maxLength&#34; as&#34; maxLenght&#34;