दिलचस्प पोस्ट
मैं सी # में HTML वर्णों को कैसे व्याख्या कर सकता हूँ? कोई अंतर नहीं के साथ संख्याओं का एक क्रम समूह करने के लिए LINQ का उपयोग करें एंड्रॉइड स्टूडियो रिपोर्टिंग क्यों "यूआरआई पंजीकृत नहीं है"? मैक ओएसएक्स 10.9 पर जेवाओएचओएमई पर्यावरण चर सेट करना कैसे एक आदेश को निष्पादित करें और सी + + के भीतर सी + + के आउटपुट को POSIX का उपयोग करें? UICollectionView के अंदर एक UITableViewCell – गतिशील ऊंचाई? एंड्रॉइड स्क्रीन पर छवियां खींचें और ड्रॉप करें? वर्तमान में टुकड़ा प्रदर्शित करें सीएसएस के साथ वर्तमान पृष्ठ का लिंक रंग बदलें मैं बास स्क्रिप्ट में नियमित अभिव्यक्ति कैसे उपयोग करूँ? पायथन के साथ ऑडियो चलाएं पोस्टग्रेज़ में धारावाहिक प्राथमिक कुंजी कॉलम का उपयोग करने वाली तालिकाओं का सुरक्षित और साफ तौर पर नाम बदलें? एक BKS (BouncyCastle) प्रारूप जावा कुंजीस्टोर बनाने के लिए जिसमें क्लाइंट प्रमाणपत्र श्रृंखला शामिल है क्या कोई एल्गोरिथ्म है जो दो वाक्यांशों की शब्दार्थिक समानता बताता है अक्षम href टैग

AngularJS: एनजी मॉडल बाध्यकारी अद्यतन नहीं है जब jQuery के साथ बदल दिया

यह मेरा HTML है:

<input id="selectedDueDate" type="text" ng-model="selectedDate" /> 

जब मैं बॉक्स में टाइप करता हूं, तो मॉडल को 2-रास्ता-बाध्यकारी तंत्र के माध्यम से अपडेट किया जाता है। मिठाई।

हालांकि जब मैं यह JQuery के माध्यम से करता हूँ …

 $('#selectedDueDate').val(dateText); 

यह मॉडल को अपडेट नहीं करता है क्यूं कर?

वेब के समाधान से एकत्रित समाधान "AngularJS: एनजी मॉडल बाध्यकारी अद्यतन नहीं है जब jQuery के साथ बदल दिया"

कोणीय उस परिवर्तन के बारे में नहीं जानता है इसके लिए आपको $scope.$digest() को कॉल करना चाहिए $scope.$digest() या $scope.$apply() अंदर परिवर्तन करना $scope.$apply() :

 $scope.$apply(function() { // every changes goes here $('#selectedDueDate').val(dateText); }); 

गंदा जांच को बेहतर ढंग से समझने के लिए इसे देखें

अद्यतनः यहां एक उदाहरण है

महज प्रयोग करें;

 $('#selectedDueDate').val(dateText).trigger('input'); 

मैंने पाया है कि यदि आप सीधे चर के खिलाफ चर नहीं डालते तो यह अधिक मज़बूती से अद्यतन करता है

कुछ "dateObj.selectedDate" का उपयोग करने की कोशिश करें और नियंत्रक में selectedDate को एक dateObj ऑब्जेक्ट के रूप में जोड़ें:

 $scope.dateObj = {selectedDate: new Date()} 

यह मेरे लिए काम किया

इसे इस्तेमाल करे

 var selectedDueDateField = document.getElementById("selectedDueDate"); var element = angular.element(selectedDueDateField); element.val('new value here'); element.triggerHandler('input'); 

बस अपने कार्य के अंत में निम्नलिखित पंक्ति चलाएं:

$ गुंजाइश। $ लागू ()

AngularJS पास स्ट्रिंग, संख्या और बूलियन मान के द्वारा जब यह संदर्भ द्वारा सरणियों और ऑब्जेक्ट पास करता है। तो आप एक खाली वस्तु बना सकते हैं और अपनी तिथि को उस वस्तु की संपत्ति बना सकते हैं। इस तरह कोणीय मॉडल परिवर्तनों का पता लगाएगा।

नियंत्रक में

 app.module('yourModule').controller('yourController',function($scope){ $scope.vm={selectedDate:''} }); 

Html में

 <div ng-controller="yourController"> <input id="selectedDueDate" type="text" ng-model="vm.selectedDate" /> </div> 

जो भी कोणीय के दायरे के बाहर होता है, कोनेर कभी यह नहीं जान पाएगा।

डाइजेस्ट चक्र ने मॉडल से बदल दिया -> नियंत्रक और फिर नियंत्रक से -> मॉडल

यदि आपको नवीनतम मॉडल देखने की आवश्यकता है, तो आपको डाइजेस्ट चक्र को ट्रिगर करना होगा

लेकिन प्रगति में एक डायजेस्ट चक्र का मौका है, इसलिए हमें चक्र को जांचना और इनट करने की आवश्यकता है।

अधिमानतः, हमेशा एक सुरक्षित आवेदन करें।

  $scope.safeApply = function(fn) { if (this.$root) { var phase = this.$root.$$phase; if (phase == '$apply' || phase == '$digest') { if (fn && (typeof (fn) === 'function')) { fn(); } } else { this.$apply(fn); } } }; $scope.safeApply(function(){ // your function here. }); 

मैंने jQuery के लिए यह छोटा प्लगइन लिखा है, जो सभी कॉल्स को .val(value) यदि मौजूद है तो कोण तत्व अपडेट करें:

 (function($, ng) { 'use strict'; var $val = $.fn.val; // save original jQuery function // override jQuery function $.fn.val = function (value) { // if getter, just return original if (!arguments.length) { return $val.call(this); } // get result of original function var result = $val.call(this, value); // trigger angular input (this[0] is the DOM object) ng.element(this[0]).triggerHandler('input'); // return the original result return result; } })(window.jQuery, window.angular); 

बस jQuery और angular.js के बाद इस स्क्रिप्ट को पॉप और val(value) अद्यतन अब अच्छा खेलना चाहिए


न्यूनतम संस्करण:

 !function(n,t){"use strict";var r=n.fn.val;n.fn.val=function(n){if(!arguments.length)return r.call(this);var e=r.call(this,n);return t.element(this[0]).triggerHandler("input"),e}}(window.jQuery,window.angular); 

उदाहरण:

 // the function (function($, ng) { 'use strict'; var $val = $.fn.val; $.fn.val = function (value) { if (!arguments.length) { return $val.call(this); } var result = $val.call(this, value); ng.element(this[0]).triggerHandler('input'); return result; } })(window.jQuery, window.angular); (function(ng){ ng.module('example', []) .controller('ExampleController', function($scope) { $scope.output = "output"; $scope.change = function() { $scope.output = "" + $scope.input; } }); })(window.angular); (function($){ $(function() { var button = $('#button'); if (button.length) console.log('hello, button'); button.click(function() { var input = $('#input'); var value = parseInt(input.val()); value = isNaN(value) ? 0 : value; input.val(value + 1); }); }); })(window.jQuery); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div ng-app="example" ng-controller="ExampleController"> <input type="number" id="input" ng-model="input" ng-change="change()" /> <span>{{output}}</span> <button id="button">+</button> </div> 

इनपुट तत्व के परिवर्तन ईवेंट को ट्रिगर करना है क्योंकि एनजी-मॉडल इनपुट इवेंट को सुनता है और दायरा अद्यतन किया जाएगा। हालांकि, नियमित jQuery ट्रिगर मेरे लिए काम नहीं किया लेकिन यह एक जादू की तरह काम करता है

 $("#myInput")[0].dispatchEvent(new Event("input", { bubbles: true })); //Works 

निम्नलिखित काम नहीं किया

 $("#myInput").trigger("change"); // Did't work for me 

आप सिंथेटिक घटनाओं को बनाने और प्रेषण करने के बारे में अधिक पढ़ सकते हैं