19

Direktifin denetleyicisinden "&" işlemi aracılığıyla bir denetleyicinin kapsamından bir yönerge geçirilen bir işlevi çağırmaya çalışıyorum. Bununla birlikte, bu yöntemin, Açısal tarafından tanımlanmamış olduğu iddia edilir. Kodumu tekrar tekrar okuduktan, interneti temizledikten ve o süreci tekrarladıktan sonra, burada yardımcı olmaya karar verdim.AngularJS: Bir denetleyicide çağrılması gereken bir yönergelerin yalıtılmış bir kapsamına geçmek?

Denetleyicimin ilgili kısmı. Direktifime ilettiğim yöntemi içerir.

İşte yönergem. OnPost'a davet edemiyorum.

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(); 
        } 
       }); 
      }; 
     }, 
    }; 
}]); 

Ve burada sorun benim postalService Servisi olmadığını biliyoruz benim html

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

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

</div> 

ilgili kısmı. Bunun yerine, yönerge hiçbir işlevin iletilmediğini bildirir. Niye ya??

cevap

24

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

ile

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

değiştirin ve bu ödeme şekli.

Angular docs bu kadar neden ki:

Direktifleri böyle ngBind olarak deve kasalı isimler var. Yönerge, bu özel karakterlerle: deve veya _ ile deve kasasının adını yılan kasasına çevirerek çağrılan olabilir.

+0

Ah, elbette! Angular'ın belirli bir sebebi var mı (saç izleyicisinin saçlarını çıkarması yanında)? – thebradbain

+0

@thebradbain Bunun için doğru bir cevabım yok, ama W3C'den gelen çoğu standart, küçük harfleri tire ile kullanma eğilimindedir, bu nedenle Açısal adamların bu sözleşmeye sadece takılıp kaldığını söyleyebilirim. Ben de ne deve davasında ne de pascal vakada yazılmış herhangi bir HTML işaretine koşmayı hatırlamıyorum. –

+4

HTML doğası büyük ölçüde duyarsız - on özellik onpost özniteliğine eşdeğerdir. Bu nedenle, JavaScript camelCase ==> HTML yılan çantası bir konvansiyonu makul. – MikeMac

İlgili konular