J'ai le contrôleur angulaire suivant avec un simple http:

angular.module('SCtrl', ['ng-fusioncharts']).controller('SCtrl', function($scope, $http) {

    //Get All errors.
    $http({
        method: 'GET',
        url: 'node/errors'
    }).then(function successCallback(response) {
        $scope.notifications = response.data;
        console.log($scope.notifications);
    }, function errorCallback(response) {

    });
}

Cela fonctionne bien.

J'ai alors la directive suivante. Je veux pouvoir mettre {{notifications}} dans le corps du module, mais cela ne fonctionne pas. Je suppose que c'est parce que je donne à la directive son propre champ d'application. Quelle est la bonne façon de lier des étendues? Ma tentative est ci-dessous mais cela ne fonctionne pas.

Merci!

angular.module('SCtrl').directive('listDirective',function(){
    return{
        restrict:'E',
        scope:{
            listTitle:"@",
            notifications:"="
        },
        templateUrl: '../templates/listWidget.html',
        link: function(scope, element, attrs){
            $scope.notifications=scope.notifications;
        }
    }
});
0
Matt Boyle 17 janv. 2017 à 17:17

2 réponses

Meilleure réponse

Incompris initialement, comme @devqon l'a souligné, vous devez passer votre objet notification dans list-directive qui peut être consulté dans votre listWidget.html

<list-directive notifications="notifications"></list-directive>
2
Thalaivar 17 janv. 2017 à 14:26
<list-directive notifications="notifications"></list-directive>

link: function(scope, element, attrs){
            scope.notifications=scope.notifications;
        }

Vous devez attribuer les valeurs notifications = "notifications" sinon vous ne pouvez pas obtenir. Ou bien vous pouvez déclencher l'appel d'API dans la directive elle-même. Vous n'avez plus besoin d'attribuer notifications = "notifications".

0
Manikandan Velayutham 17 janv. 2017 à 15:03