Angularjs - передача службы директиве динамически - PullRequest
0 голосов
/ 11 января 2019

Я должен оптимизировать приложение в angularjs 1.2

Это файл кода Jade, в котором динамически передается служба моей директиве (creaDatos.jade)

div(datos-u, service="userDataSrv") // The div has associated a directive to which has service is dynamically passed

Это директива кода (datosU.js)

(appModule.lazy || appModule)
    .directive('datosU', [ function() {

        // Runs during compile
        return {
            restrict: 'A',
            scope: {
                service: '='
            },
            templateUrl: 'commons/html/user.html',
            controller: 'userCtrl'
        };
    }]);

Это контроллер кода (userCtrl.js)

(appModule.lazy || appModule)
.controller('userCtrl', ['$scope', '$injector',
    function($scope, $injector) {

        var srv = $injector.get($scope.service); /* The variable "srv" should have the value "userDataSrv" but his value is "undefined", The value of "$scope.service" is "undefined" */

    }]);

Это ошибка в консоли браузера:

Error: [$injector:unpr] Unknown provider: undefinedProvider <- 
http://errors.angularjs.org/1.2.16/$injector/unpr?p0=undefinedProvider%20%3C-%20

Я не знаю, что я делаю неправильно, не могли бы вы мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 13 января 2019

Вместо использования двусторонней привязки для service (=) используйте привязку строк (@).

Итак, измените вашу директиву следующим образом:

(appModule.lazy || appModule)
    .directive('datosU', [ function() {

        // Runs during compile
        return {
            restrict: 'A',
            scope: {
                service: '@'
            },
            templateUrl: 'commons/html/user.html',
            controller: 'userCtrl'
        };
    }]);
...