javascript - $scope.$watch doesn't fire when I update from a directive -


मेरे पास निम्न कोड स्निपेट हैं:

HTML:

  & lt; div डेटा-डाऊनलोड डेटा-एनजी-मॉडल = "फ़ाइल" & gt; & lt; / div & gt;   

नियंत्रक:

  $ scope। $ watch ('file', फ़ंक्शन (न्यूवैल) {if (newVal) { चेतावनी ("फ़ाइल", नयावाल);}, झूठी); }   

निर्देशक:

  कोणीय.मॉड्यूल ('ऐप')। निर्देश ('पुरवाईकृत', फ़ंक्शन) वापसी {प्रतिबंधित करें: 'ए', टेम्पलेटउरेल: './directives/filedrop.html', प्रतिस्थापित करें: सही, गुंजाइश: {ngModel: '= ngModel'}, लिंक: फ़ंक्शन (क्षेत्र, तत्व) {var dropzone = element [0 ]; Dropzone.ondragover = function () {this.className = 'hover'; return false;}; dropzone.ondragend = function () {this.className = ''; वापस लौटा;}; dropzone.ondrop = function (इवेंट) ) {Event.preventDefault (); this.className = ''; गुंजाइश। $ लागू (फ़ंक्शन () {scope.ngModel = event.dataTransfer.files [0];}); वापस लौटा;}}}}}}) ;   

जब $ $ का दायरा अद्यतन करता हूं तो $ घड़ी फ़ंक्शन कभी ट्रिगर नहीं होता।

कोई भी विचार ?? एक पृथक दायरा मुद्दा हो सकता है? यह कल तक काम करता था ... जब मुझे फिर से करना पड़ता था

बोवर स्थापित & amp; amp; Npm install

मैं पुष्टि कर सकता हूं:

  • dropzone.ondrop निकाल दिया गया है
  • event.dataTransfer.files [0] इसमें शामिल है फाइल को छोड़ा जा रहा है
  • कुत्ता स्थापित करने के कारण मैंने भी 2.1.14 , 2.1.15 और 2.1.16 (वर्तमान) लेकिन कोई भी काम नहीं कर रहा है

    धन्यवाद!

    सैंडर

    एनजीएमडेल एक नियंत्रक / प्रदाता है, यह कोई गुंजाइश नहीं है। यह किसी भी तरह से एक नियंत्रक की तरह एक गुंजाइश का उपयोग करने के लिए समान नहीं है। आपको एनजीएमोडेल का उपयोग करना होगा। $ SetViewValue ('कुछ मान') मान में हेरफेर करने के लिए। आपको इस तरह ngModel को भी जोड़ना होगा:

      की आवश्यकता है: 'ngModel', लिंक: फ़ंक्शन (स्कोप, एलिमेंट, एटर्स, एनजीएमोडेल) {// कुछ सामान ngModel। $ SetViewValue (तत्व .html ()); // उदाहरण}   

    मुझे एक अच्छा ट्यूटोरियल मिला है जो पूरी तरह से इसका वर्णन करता है:

    एक अन्य विकल्प निश्चित रूप से इस तरह की एक स्कोप वैरिएबल को पारित करना होगा:

    निर्देशक:

      गुंजाइश: {'someAttribute': '='}, लिंक: फ़ंक्शन (क्षेत्र, तत्व) {dropzone.ondrop = function (event) {दायरा। $ लागू होते हैं (फ़ंक्शन () {scope.someAttribute = event.dataTransfer.files [0];}); }}   

    नियंत्रक देखें:

      & quot; div filedrop कुछ विशेषता = "mymodel" & gt; & lt; / div & gt;   

    नियंत्रक:

      $ का दायरा। $ Watch ('mymodel', फ़ंक्शन (न्यूवैल) {// yeah});    

Comments