19

मैं निर्देशक के नियंत्रक से "" ऑपरेशन के माध्यम से एक नियंत्रक के दायरे से निर्देशित एक फ़ंक्शन को कॉल करने का प्रयास कर रहा हूं। हालांकि, उस विधि को कोणीय द्वारा अपरिभाषित करने का दावा किया जाता है। मेरे कोड को पढ़ने के बाद, इंटरनेट को खराब करने और फिर उस प्रक्रिया को दोहराने के बाद, मैंने यहां सहायता करने का फैसला किया है।कोणीयजेएस: अपने नियंत्रक के भीतर बुलाए जाने वाले निर्देश के एक अलग दायरे में एक फ़ंक्शन पास करना?

यहां मेरे नियंत्रक का प्रासंगिक हिस्सा है। इसमें मेरे निर्देश में पास की गई विधि शामिल है।

angular.module('myApp.controllers', []).controller('PostCtrl', ['$scope', 'postalService', function($scope, postalService) { 
    $scope.posts = []; 

    $scope.getPosts = function() { 
     postalService.getPosts(function(err, posts) { 
      if(err); 
      else $scope.posts = posts; 
     }); 
    }; 
}]); 

मेरा निर्देश यहां दिया गया है। मैं पोस्ट पर आह्वान करने में असमर्थ हूं।

angular.module('myApp.directives', []).directive('compose', ['postalService', function(postalService) { 
    return { 
     restrict: 'E', 
     transclude: false, 
     replace: true, 
     scope: { 
      onPost: "&" //why will it not 
     }, 
     templateUrl: "partials/components/compose-partial.html", 
     controller: function($scope, postalService) { 
      $scope.title = ""; 
      $scope.content = ""; 
      $scope.newPost = function() { 
       postalService.newPost($scope.title, $scope.content, function(err) { 
        if(err) console.log(err + ":("); 
        else { 
         console.log("Success getting posts."); 
         //why can I not invoke onPost()?? 
         $scope.onPost(); 
        } 
       }); 
      }; 
     }, 
    }; 
}]); 

और यहाँ मेरी एचटीएमएल

<div ng-controller="PostCtrl"> 
    <section class="side-bar panel hide-for-small"> 
     <compose onPost="getPosts()"></compose> 
    </section> 

    <!--more, non-relevant html here--> 

</div> 

की प्रासंगिकता का मैं जानता हूँ कि समस्या मेरी postalService सेवा के साथ नहीं है। इसके बजाए, निर्देश रिपोर्ट करता है कि इसमें कोई कार्य नहीं हुआ है। क्यूं कर??

उत्तर

24

<compose on-post="getPosts()"></compose> 

के साथ बदलें

<compose onPost="getPosts()"></compose> 

और यह काम करेंगे।

Angular docs कहना कारण है कि यह इतना है:

निर्देशों ऐसे ngBind के रूप में ऊंट मामलों नाम है। निर्देश को विशेष वर्णों,, -, या _ के साथ सांप मामले में ऊंट केस नाम का अनुवाद करके आमंत्रित किया जा सकता है।

+0

आह, ज़ाहिर है! क्या कोई विशिष्ट कारण है कोणीय करता है (बग-ट्रैकर अपने बालों को बाहर निकालने के अलावा)? – thebradbain

+0

@thebradbain मुझे इसके लिए कोई सीधा जवाब नहीं मिला है, लेकिन डब्ल्यू 3 सी से आने वाले अधिकांश मानकों में हाइफ़न के साथ कम केस का उपयोग होता है, इसलिए मैं कहूंगा कि कोणीय लोग बस उस सम्मेलन में फंस गए हैं। मुझे खुद को न तो ऊंट मामले और न ही पास्कल मामले में लिखे गए किसी भी HTML मार्कअप में चलना याद नहीं है। –

+4

एचटीएमएल मूल रूप से केस-असंवेदनशील है - पोस्ट पर विशेषता ऑनपोस्ट विशेषता के बराबर है। इसलिए, जावास्क्रिप्ट camelCase ==> एचटीएमएल सांप-केस का एक सम्मेलन उचित है। – MikeMac

संबंधित मुद्दे

 संबंधित मुद्दे