2013-11-26 13 views
22

IE10 + 'da angularJS, TextArea yer tutucu ile birlikte kullanıldığında "Geçersiz değişken" alıyorum.IE10 + üzerinde AngularJS, yer tutucuyla birlikte textarea "Geçersiz değişken."

SADECE, textarea düğümü </textarea> ile kapatıldığında gerçekleşecek ve tek başına textarea'yı kapattığımda olmaz.

Bu "Geçersiz bağımsız değişken" istisna yükseltecektir

:

<div ng-app> 
    <input ng-model="placeholderModel" type="text"/> 
    <textarea id="message" placeholder="{{placeholderModel}}" ng-model="textareaModel"></textarea> 
</div> 

Bu, hiçbir sorunları ile çalışır:

<div ng-app> 
    <input ng-model="placeholderModel" type="text"/> 
    <textarea id="message" placeholder="{{placeholderModel}}" ng-model="textareaModel"/> 
</div> 

burada örnek çalıştırma: Biliyorum http://jsfiddle.net/huecc/

+0

Bu, IE, Açısal ve textareas ile başka bir hatayı daha çözmüştür. Teşekkür ederim! –

+1

Hala var: https://github.com/angular/angular.js/issues/5025 – gilamran

+0

sadece bir fyi: Android kromunda aynı sorunu alıyorum. – transformerTroy

cevap

22

Bu, öğenin yer tutucusuna bağlanma biçiminizle ilgili bir sorun gibi görünüyor - garip, biliyorum.

Doğrudan IE'deki özniteliğe doğrudan bağlanmak yerine ng-attr-placeholder yönergesini kullanarak her şeyi düzgün bir şekilde IE'de çalıştırabildim. Örneğin

, yerine:

<textarea ng-attr-placeholder="placeholderModel" ng-model="textareaModel"></textarea> 

Related'i:

<textarea placeholder="{{placeholderModel}}" ng-model="textareaModel"></textarea> 

bu deneyinAngularJS v1.2.5 script error with textarea and placeholder attribute using IE11

+1

'ngAttrPlaceholder', kullanımdan kaldırılmış gibi görünüyor. Bu yaklaşımı hala kullanmak istiyorsanız, burada gösterildiği gibi özel bir yönerge kullanmanız gerekebilir (https://gist.github.com/mbenford/dd7556f01963f49e5c7d). Ya da diğer cevabın önerdiği şekilde arasında bir boşluk ekleyebilirsiniz. – user1778988

3

Bu soru şu anda çok eski ama düşüncelerimi de atmayı düşündüm . Biz birkaç ay önce bu konuda koştu ve bir düzeltme canlandırmak zorunda kaldı, bu yüzden biz sorunu çözmek için bu yönergeyi kullanarak bitti:

mod.directive('placeHolder', [ 
    function(){ 
     return { 
      restrict: 'A', 
      link: function(scope, elem, attrs){ 
       scope.$watch(attrs.placeHolder, function(newVal,oldVal){ 
        elem.attr('placeholder', newVal); 
       }); 
      } 
     }; 
    } 
]); 

Ve sonra görünümlerde kullanabilirsiniz:

<textarea place-holder="placeholderModel" ng-model="textareaModel"></textarea> 

Model verileriniz ulaştığında (muhtemelen eşzamansız), yönerge <textarea> için geleneksel bir placeholder özniteliği ekleyecektir ve istediğiniz gibi çalışacaktır.

Bu en büyük çözüm değil, ancak çalışıyor. Umarım yardımcı olur.

+3

[ng-attr-placeholder] 'ı kullanabileceğimiz zaman özel bir yönergeye gerek yok (https://docs.angularjs.org/guide/directive#-ngattr-attribute-bindings) direktif yerine. :) – Alexander

+0

Dürüst bir şekilde, "ng-attr- *" yönergesinin varlığından hiçbir fikrim yoktu. Bu kesinlikle hile yapacakmış gibi geliyor. – tennisgent

6

Bugün bu hatayı deneyimli ve rastgele bu tökezledi soru. İşte beni

önce bunu çözmüş ne:

<textarea placeholder="{[{ 'NAME' | translate }]}" ng-model="name" name="name"></textarea> 

sonra:

<textarea placeholder="{[{ 'NAME' | translate }]}" ng-model="name" name="name"> </textarea> 

Not textarea içindeki küçük uzay, aslında şikayet gelen IE durdu ne ...

+0

Bu benim için çalışmadı, ama beni doğru yolda yakaladın! Ben kullandım: translate> {{'TRANSLATE_ME'}} {{'TRANSLATE_ME' | çeviri}} jBoive

+0

Artık bir hata atmıyor, ancak yer tutucu metni de göstermiyor. –

+0

Doğru, daha sonra alanı silme dışında muhtemelen onlar muhtemelen Windows 10'da düzeltildi. Ben aslında her textarea için 'element.innerText = '';' yapmak bir yönerge sahip bitti, çünkü hatırlamak zorunda rahatsız etmek istemedim tüm dokularda bir boşluk bırakmak. –

İlgili konular