[Javascript] पैरामीटर परिवर्तन पर कोणीय निर्देश ताज़ा करें


Answers

आप जो करने की कोशिश कर रहे हैं वह निर्देश में गुण की संपत्ति की निगरानी करना है। आप निम्नानुसार $ निरीक्षण () का उपयोग करके विशेषता परिवर्तन की संपत्ति देख सकते हैं:

angular.module('myApp').directive('conversation', function() {
  return {
    restrict: 'E',
    replace: true,
    compile: function(tElement, attr) {
      attr.$observe('typeId', function(data) {
            console.log("Updated data ", data);
      }, true);

    }
  };
});

ध्यान रखें कि मैंने निर्देश में 'संकलन' फ़ंक्शन का उपयोग किया है क्योंकि आपने उल्लेख नहीं किया है कि आपके पास कोई मॉडल है या नहीं और यह प्रदर्शन संवेदनशील है या नहीं।

यदि आपके पास मॉडल हैं, तो आपको ' कंपाइल ' फ़ंक्शन को ' लिंक ' में बदलने या ' नियंत्रक ' का उपयोग करने और मॉडल परिवर्तनों की संपत्ति की निगरानी करने की आवश्यकता है, आपको $ watch () का उपयोग करना चाहिए, और कोणीय {{}} संपत्ति से ब्रैकेट, उदाहरण:

<conversation style="height:300px" type="convo" type-id="some_prop"></conversation>

और निर्देश में:

angular.module('myApp').directive('conversation', function() {
  return {
    scope: {
      typeId: '=',
    },
    link: function(scope, elm, attr) {

      scope.$watch('typeId', function(newValue, oldValue) {
          if (newValue !== oldValue) {
            // You actions here
            console.log("I got the new value! ", newValue);
          }
      }, true);

    }
  };
});
Question

मेरे पास एक कोणीय निर्देश है जिसे प्रारंभ किया गया है:

<conversation style="height:300px" type="convo" type-id="{{some_prop}}"></conversation>

मैं चाहता हूं कि यह निर्देश को रीफ्रेश करने के लिए पर्याप्त स्मार्ट हो, जब $scope.some_prop परिवर्तन हो, जैसा कि इसका तात्पर्य है कि इसे पूरी तरह से अलग सामग्री दिखाना चाहिए।

मैंने इसका परीक्षण किया है क्योंकि यह कुछ भी नहीं होता है, लिंकिंग फ़ंक्शन को तब भी कॉल नहीं किया जाता है जब $scope.some_prop बदल जाता है। क्या ऐसा करने का कोई तरीका है?




angular.module('app').directive('conversation', function() {
    return {
        restrict: 'E',
        link: function ($scope, $elm, $attr) {
            $scope.$watch("some_prop", function (newValue, oldValue) {
                  var typeId = $attr.type-id;
                  // Your logic.
            });
        }
    };
}



Links