2017-03-21 12 views
1

anglejsを使用しています。1.5.8、グループモジュールを使用してグループとしてコンポーネント名を作成しました。同じモジュールのディレクティブをスクロールの名前のコンポーネントとして作成します。 必要ですloadmoregroupsであるコンポーネント関数を呼び出してapiを呼び出して、bootomでスクロールするグループを増やします。外側のディレクティブからangleコンポーネント関数を呼び出す方法

angular.module('group', []). 
     component('group', { 
      templateUrl: '/djangotemplates/private/group/list.html', 
      controller: function(
        $cookies, 
        $http, 
        $location, 
        $scope, 
        Flash, 
        $animate, 
        Group, 
        $timeout, 
        $rootScope 
       ){ 

       $rootScope.loadMoreGroups =function() 
       { 
        alert("loadmore"); 
       } 
     } 
}).directive('scroll', function() { 
    return { 
     restrict: 'A', 
     link: function(rootScope, element, attrs, $window, $scope, $document) { 
      var bind = element.bind('tbody'); 
      var raw = element[0]; 
      angular.element(bind).on("scroll", function() { 
       //console.log('in scroll mode'); 

       if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) { 

        **rootScope.loadMoreGroups();** //unable to call this `enter code here`function 

       } 
      }); 
     } 
    }; 
}); 
+0

のベストプラクティスは、機能とrootScopeを使用しないことです。もっと見る:http://stackoverflow.com/questions/32761540/why-using-rootscope-with-functions-is-not-recommended –

答えて

2

これが最善の方法かどうかわかりませんが、ブロードキャストを使用して子コンポーネントから親コンポーネントを呼び出すことができます。

if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) { 
    $scope.$broadcast("call_func") 
} 

コンポーネント

.component('group', { 
    templateUrl: '/djangotemplates/private/group/list.html', 
    controller: function(
     $cookies, 
     $http, 
     $location, 
     $scope, 
     Flash, 
     $animate, 
     Group, 
     $timeout, 
     $rootScope 
    ) { 
     $rootScope.loadMoreGroups = function() { 
      alert("loadmore"); 
     } 
     $scope.$on("call_func", function(ev) { 
      $rootScope.loadMoreGroups() 
     }) 
    } 
}) 
+0

これは私の目標のために働いていた@sachila – Rahil

+0

正しい答えとしてマークするようにしてくださいこれが助けられたら:D –

関連する問題