2013-12-18 26 views
15

का उपयोग कर टेक्स्टरेरा और प्लेसहोल्डर विशेषता के साथ AngularJS v1.2.5 स्क्रिप्ट त्रुटि मेरे पास एक कोणीय जेएस v1.2.5 रूप है जो IE11 में काम नहीं करेगा। यह फ़ायरफ़ॉक्स, क्रोम, सफारी में ठीक काम करता है। मेरा फॉर्म प्लेसहोल्डर विशेषता के अंदर इंटरपोलेशन के साथ टेक्स्टरेरा का उपयोग करता है।आईई 11

<body ng-controller="MainCtrl"> 
    <p>Hello {{ name }}!</p> 
    <textarea rows="4" placeholder="Description of the {{ name }}"></textarea> 
    </body> 

यदि प्लेसहोल्डर विशेषता इंटरपोलेशन के साथ निर्दिष्ट है, तो मुझे निम्न त्रुटि (केवल आईई में) मिलती है।

Error: Invalid argument. 
    at interpolateFnWatchAction (https://localhost:44300/Scripts/angular.js:6410:15) 
    at $digest (https://localhost:44300/Scripts/angular.js:11581:23) 
    at $apply (https://localhost:44300/Scripts/angular.js:11832:13) 
    at done (https://localhost:44300/Scripts/angular.js:7774:34) 
    at completeRequest (https://localhost:44300/Scripts/angular.js:7947:7) 
    at onreadystatechange (https://localhost:44300/Scripts/angular.js:7903:11) 

यहाँ एक Plnkr कि फायरफॉक्स, क्रोम, सफारी में ठीक काम करता है है - लेकिन नहीं IE11 में। http://plnkr.co/edit/4cJzxtVSDoL2JMI9nYrS?p=preview

मैं Angular.js के भीतर ही डीबग करने की कोशिश कर रहा हूं। मैं सही दिशा में मुझे सेट करने के लिए वास्तव में किसी भी सुझाव की सराहना करता हूं। धन्यवाद।

+0

शायद पहली चीज इसे पुन: पेश करना है। – zsong

+0

इस पर काम करना। इस बीच, किसी और को ढूंढने की उम्मीद है जिसकी समस्या है। – Ender2050

+1

इट ऐसा लगता है कि यह अजाक्स अनुरोध पर है, क्या आप अपने बेड़े में AJAX को फिक्र करने का प्रयास कर सकते हैं? एक यूआरएल जेएसफ़िल्ड है जो आप पोस्ट कर सकते हैं और उसी डेटा को वापस प्राप्त कर सकते हैं, देव उपकरण में अपना नेटवर्क टैब जांचें, जब आप उसमें त्रुटि प्राप्त करते हैं तो आप जो भी वापस प्राप्त करते हैं उसे पोस्ट करें। –

उत्तर

47

मैं डीओएम में विशेषता को सीधे बाध्य करने के बजाय ng-attr-placeholder निर्देश का उपयोग करके आईई में सही ढंग से काम कर रहा सबकुछ प्राप्त करने में सक्षम था। उदाहरण के लिए:

<textarea ng-attr-placeholder="Description of the {{ name }}"></textarea> 
+4

यह स्वीकार किया जाना चाहिए anwser, कोई अतिरिक्त कोड आवश्यक है। – yarl

+0

मेरे लिए काम करता है! धन्यवाद – magritte

+0

यह समाधान आईई 11/कोणीय 1.4.8 पर काम करता है। धन्यवाद! –

3

Zsong ऊपर उल्लेख किया है, यह एक बग है - https://github.com/angular/angular.js/issues/5025

एक अस्थायी उपाय के रूप में, मैं एक निर्देश IE में पाठ क्षेत्रों के लिए प्लेसहोल्डर को संभालने के लिए लिखा था। यह निर्देश प्लेसहोल्डर विशेषता को तब तक सेट करेगा जब तक यह आईई नहीं है। यह केवल टेक्स्ट क्षेत्रों (सभी प्लेसहोल्डर नहीं) पर आवश्यक होना चाहिए।

//This directive corrects an interpolation error with textarea/IE 
app.directive("placeholderAttr", 
    function ($timeout, $parse) { 
     return { 
      restrict: "A", 
      scope: { 
       placeholderAttr: '@' 
      }, 
      link: function (scope, element, attrs, controller) { 

       //Test for IE 
       var ie = navigator.userAgent.match(/MSIE/); 
       var ie11 = navigator.userAgent.match(/Trident\/7\./); 

       //If this is IE, remove the placeholder attribute 
       if (!ie && !ie11) 
       { 
        scope.$watch("placeholderAttr", function (value) { 
         element.attr("placeholder", scope.$eval(value)); 
        }); 
       } 

      } 
     }; 

    }); 

उपयोग:

<textarea rows="4" data-placeholder-attr="Description of the {{ name }}"></textarea> 

आशा इस किसी और में मदद करता है ... आईई - urgh।

+0

आपको यह उत्तर उपर्युक्त प्रश्न पर पोस्ट करना चाहिए जिसे पहले पूछा गया था। फिर लोग इसे स्वीकार कर सकते हैं, और आप SO से अपना प्रश्न हटा सकते हैं। – Oliver

+0

ठीक है, मैं समाधान के रूप में अपने उत्तर को हाइलाइट करने में संकोच नहीं कर रहा था। ज़्सॉन्ग ने बताया कि यह एक बग है - ऊपर उसका लिंक जवाब है। मेरा निर्देश एक अस्थायी उपाय है। धन्यवाद। – Ender2050

+7

बस 'प्लेसहोल्डर' के बजाय 'ng-attr-placeholder' का उपयोग करें। एक नए निर्देश की कोई ज़रूरत नहीं है। – AppleGrew

1

कोणीय-अनुवाद पुस्तकालय (https://github.com/angular-translate/angular-translate) का उपयोग करते समय मुझे एक ही समस्या थी।

विशेष रूप से एक सूचकांक युक्त गतिशील पाठ पर अनुवाद करने के लिए "निर्देशक मार्ग" का उपयोग करने का प्रयास करते समय विशेष रूप से। मैंने अनुवाद के लिए "फिल्टर मार्ग" द्वारा निर्देश को प्रतिस्थापित किया और समस्या हल हो गई।

से पहले:

<div translate>{{ scope.textInArray[someIndex] }}</div>

के बाद:

<div>{{ scope.textInArray[someIndex] | translate }}</div>

नोट: भी शामिल नहीं "{{...}}" अनुवाद या द्वारा कि जगह के लिए विशेषता मान के रूप में एक फंक्शन कॉल ने मेरी समस्या हल की।

संबंधित मुद्दे