javascript - एकाधिक $ स्कोप विशेषताओं को देखें




angularjs events (8)

$watch का उपयोग कर एकाधिक वस्तुओं पर घटनाओं की सदस्यता लेने का कोई तरीका है

उदाहरण के लिए

$scope.$watch('item1, item2', function () { });

$ पहला पैरामीटर कोणीय अभिव्यक्ति या समारोह हो सकता है। $scope.$watch पर दस्तावेज़ देखें $scope.$watch । इसमें $ घड़ी विधि कैसे काम करती है, इस बारे में बहुत उपयोगी जानकारी होती है: जब घड़ी एक्सपेरियन कहा जाता है, तो कोणीय तुलना परिणाम कैसे होते हैं।


AngularJS 1.1.4 के साथ शुरुआत आप $watchCollection उपयोग कर सकते हैं:

$scope.$watchCollection('[item1, item2]', function(newValues, oldValues){
    // do stuff here
    // newValues and oldValues contain the new and respectively old value
    // of the observed collection array
});

here प्लंकर उदाहरण

here दस्तावेज़ीकरण


आप किसी ऑब्जेक्ट के फ़ील्ड को स्कोप में चुनने के लिए $ watchGroup में फ़ंक्शंस का उपयोग कर सकते हैं।

        $scope.$watchGroup(
        [function () { return _this.$scope.ViewModel.Monitor1Scale; },   
         function () { return _this.$scope.ViewModel.Monitor2Scale; }],  
         function (newVal, oldVal, scope) 
         {
             if (newVal != oldVal) {
                 _this.updateMonitorScales();
             }
         });

इसे बस किसी के लिए क्यों लपेटें?

angular.forEach(['a', 'b', 'c'], function (key) {
  scope.$watch(key, function (v) {
    changed();
  });
});

यह वही ओवरहेड के बारे में है जो संयुक्त मूल्य के लिए एक फ़ंक्शन प्रदान करता है, वास्तव में मूल्य संरचना के बारे में चिंता किए बिना


कोणीय ने संस्करण 1.3 में $watchGroup पेश किया जिसका उपयोग करके हम एकाधिक चर देख सकते हैं, एक $watchGroup समूह $watchGroup पहले पैरामीटर के रूप में सरणी लेता है जिसमें हम देखने के लिए हमारे सभी चर शामिल कर सकते हैं।

$scope.$watchGroup(['var1','var2'],function(newVals,oldVals){
   console.log("new value of var1 = " newVals[0]);
   console.log("new value of var2 = " newVals[1]);
   console.log("old value of var1 = " oldVals[0]);
   console.log("old value of var2 = " oldVals[1]);
});

मूल्यों को गठबंधन करने के लिए थोड़ा सुरक्षित समाधान आपके $watch फ़ंक्शन के रूप में निम्न का उपयोग करना हो सकता है:

function() { return angular.toJson([item1, item2]) }

या

$scope.$watch(
  function() {
    return angular.toJson([item1, item2]);
  },
  function() {
    // Stuff to do after either value changes
  });

$watch पहला पैरामीटर भी एक समारोह हो सकता है।

$scope.$watch(function watchBothItems() {
  return itemsCombinedValue();
}, function whenItemsChange() {
  //stuff
});

यदि आपके दो संयुक्त मूल्य सरल हैं, तो पहला पैरामीटर सामान्य रूप से केवल एक कोणीय अभिव्यक्ति है। उदाहरण के लिए, firstName और lastName:

$scope.$watch('firstName + lastName', function() {
  //stuff
});

$scope.$watch('age + name', function () {
  //called when name or age changed
});

यहां फ़ंक्शन कॉल किया जाएगा जब दोनों आयु और नाम मान बदल जाएंगे।







angularjs-watch