अपडेट नहीं हो एक निर्देश अपने आवेदन में मैं एक चर एनजी-मॉडल का उपयोग कर के लिए बाध्य के साथ एक पाठ इनपुट में:AngularJS + IE 11 + पॉलिमर = एनजी मॉडल
<input type="text" class="text-input" ng-change="onInputChange()" ng-model="value" />
मैं में निम्नलिखित सेट कर लेते हैं मेरी लिंक समारोह:
scope.onInputChange = function() {
console.log(scope.value);
};
scope.$watch('value', function(value) {
console.log(value);
});
setInterval(function(){
console.log(scope.value);
}, 500);
मैं इनपुट क्षेत्र में लिखते हैं, एनजी-परिवर्तन और घड़ी निकाल दिया कभी नहीं कर रहे हैं और अंतराल हमेशा अपरिभाषित आउटपुट।
आईई 11 कार्यों में एक स्टैंडअलोन एप्लिकेशन में इस निर्देश को चला रहा है।
क्रोम (नवीनतम) कार्यों में एक स्टैंडअलोन एप्लिकेशन में इस निर्देश को चला रहा है।
क्रोम (नवीनतम) कार्यों में मेरा पूरा एप्लिकेशन चला रहा है।
मेरे आवेदन में इस व्यवहार के कारण क्या हो सकता है?
संपादित करें 2:
यह स्थिति webcomponents.js
के कारण किया गया है प्रकट होता है। जब यह फ़ाइल आईई 11 में शामिल की जाती है, तो यह सभी ईवेंट श्रोताओं को डीओएम तत्वों से हटा देती है, जो उन्हें अपने dispatchOriginalEvent
फ़ंक्शन के साथ बदल देती है। निर्दिष्ट इनपुट फ़ील्ड पर, यह किसी भी सामान्य ईवेंट श्रोताओं को प्रतिस्थापित करने में विफल रहता है और इसलिए कोई भी टेक्स्ट इनपुट नहीं देखा जाता है।
संपादित करें 3:
मैं कोणीय के संयोजन के लिए आगे समस्या को संकुचित होता गया है एनजी-शामिल हैं और ShadowDOM के लिए polyfill webcomponents.js। पूर्ण निर्देश
'use strict';
(function(angular) {
angular.module('givemeareason', [
'config'
]);
angular.module('givemeareason')
.directive('giveMeAReason', ['$timeout', 'AppConfig', function($timeout, Appconfig) {
return {
restrict: 'EA',
replace : true,
template: '<div class="give-me-a-reason">' +
'<input type="text" class="reason" ng-change="onInputChange()" ng-model="reason" />' +
'</div>',
require : 'ngModel',
scope : {
onChange: '&'
},
link : function(scope, elm, attrs, ngModelContoller) {
scope.onInputChange = function() {
scope.onChange({
item: {reason: scope.reason},
valid: typeof scope.reason === 'string' && scope.reason.length > 0
});
};
scope.$watch('reason', function(reason) {
console.log(reason);
});
setInterval(function(){
console.log(scope.reason);
}, 500);
}
};
}]);
}(window.angular));
उपयोग::
<give-me-a-reason id="paste-reason" ng-model="importVm.reasonModel" on-change="importVm.reasonChanged(item, valid)"></give-me-a-reason>
संपादित करें:
निम्न त्रुटियों दिखाई इसलिए मैं
संपादित webcomponentsjs के लिए github उदाहरण के लिए एक मुद्दा जोड़ लिया है कंसोल में। वे या नहीं संबंधित हो सकता है हो सकता है:
Object doesn't support property or method 'animate'. File: web-animations.min.js, Line 16, Column: 11207
Assertion failed. File: webcomponents.js, Line: 116, Column: 15
मुद्दों पर खोज के बाद, वे browsersync से संबंधित होना दिखाई देते हैं और इस मुद्दे को इस सवाल में वर्णित अभी भी उन्हें बिना होता है।
एक प्रारंभिक परीक्षा के रूप में: नीचे एक काम कर उदाहरण देखें। यदि यह नहीं बदले तो कृपया हमें अपने निर्देश का कोड और इसका उपयोग दिखाएं। – Walfrat
यह नहीं बदला। मैंने निर्देश – George
2 चीजों का पूरा कोड जोड़ा है, मैं 'ऑन-चेंज' का उपयोग करने से बचूंगा। यह संभव है कि आईई के लिए इसके संघर्ष, इसे 'मॉडल-चेंज' जैसे कुछ नाम बदलने का प्रयास करें। दूसरा यदि आप अपने फ़ंक्शन को बाध्य करना चाहते हैं तो 'चालू करें =' importVm.reasonChanged "'। और फिर 'scope.onChange ({कारण: scope.reason}, टाइप करें scope.reason == [....])' कॉल करें; – Walfrat