私は2つの指令の間で通信しようとしています。私はサービスの方法を試して、それは動作しませんでした。たぶん私は何か間違ったことをしています。2つの指令Angularjsの間で通信しますか?
<list-data testing="trial" template-url="grid.html" link-passed="data.json"></list-data>
マイディレクティブとサービス:
app.directive('listData', function($http, serVice){
return {
restrict: 'E',
scope: {
testing: '@',
linkPassed: '@'
},
templateUrl: function(elem,attrs) {
return attrs.templateUrl || 'some/path/default.html'
},
link: function($scope){
var url = 'js/' + $scope.linkPassed;
$http.get(url).then(success, error);
function success(data){
$scope.iconUrl = data.data;
}
function error(response){
console.log(response)
}
$scope.tryingToClick = function(icon){
serVice=icon.name;
console.log(serVice)
}
}
};
});
app.directive('render', function(serVice){
return {
restrict: 'E',
template: '{{rendering}}',
link: function($scope){
$scope.rendering = serVice.name;
console.log(serVice)
}
};
});
app.factory('serVice', function(){
return{items:{}};
})
grid.htmlはちょうど私は、グリッド内のデータを表示しようとしていますシンプルなグリッドレイアウトです。
<div class="col-sm-6 grid" ng-repeat="icon in iconUrl">
<p ng-click="tryingToClick(icon)">{{icon.iconUrl}}</p>
</div>
tryToClick関数をクリックするとデータを渡す必要があり、アイコンがレンダリングディレクティブに渡されます。ここでは$ rootscopeを使うことはできませんし、新しいコントローラを作ることもできません。私はかなり大きなエンタープライズアプリケーションでここでロジックを使用しています。ちょうど論理的な権利を得るために、ローカルホストで非常に単純なバージョンを作成しました。