在IE10 +上使用angularJS,TextArea和占位符时,我得到“无效参数”。
仅当textarea节点以</textarea>
关闭时才会发生这种情况,并且当我现在关闭textarea时不会发生这种情况。
这会引发“无效参数”异常:
<div ng-app>
<input ng-model="placeholderModel" type="text"/>
<textarea id="message" placeholder="{{placeholderModel}}" ng-model="textareaModel"></textarea>
</div>
这样可以解决问题:
<div ng-app>
<input ng-model="placeholderModel" type="text"/>
<textarea id="message" placeholder="{{placeholderModel}}" ng-model="textareaModel"/>
</div>
在此处运行示例:http://jsfiddle.net/huecc/
答案 0 :(得分:22)
这似乎是你绑定到元素占位符的方式的一个问题 - 奇怪,我知道。
我能够使用ng-attr-placeholder指令在IE中正常工作,而不是直接绑定到DOM中的属性。
例如,而不是:
<textarea placeholder="{{placeholderModel}}" ng-model="textareaModel"></textarea>
试试这个:
<textarea ng-attr-placeholder="placeholderModel" ng-model="textareaModel"></textarea>
相关: AngularJS v1.2.5 script error with textarea and placeholder attribute using IE11
答案 1 :(得分:6)
我今天遇到了这个错误,随机偶然发现了这个问题。这就是为我解决的问题
<强>之前:强>
<textarea placeholder="{[{ 'NAME' | translate }]}" ng-model="name" name="name"></textarea>
<强>后:强>
<textarea placeholder="{[{ 'NAME' | translate }]}" ng-model="name" name="name"> </textarea>
请注意textarea内部的小空间,这实际上阻止了IE抱怨......
答案 2 :(得分:3)
我知道这个问题现在很老了,但我想我也会想到这个问题。几个月前我们遇到了这个问题并且不得不进行修复,因此我们最终使用该指令来解决问题:
mod.directive('placeHolder', [
function(){
return {
restrict: 'A',
link: function(scope, elem, attrs){
scope.$watch(attrs.placeHolder, function(newVal,oldVal){
elem.attr('placeholder', newVal);
});
}
};
}
]);
然后你可以在你的观点中使用它:
<textarea place-holder="placeholderModel" ng-model="textareaModel"></textarea>
一旦您的模型数据到达(可能是异步的),该指令将向placeholder
添加传统的<textarea>
属性,并且它可以按您的需要工作。
它不是最好的解决方案,但它确实有效。希望有所帮助。