Romashishka
@Romashishka
Frontend developer

Почему директива ангуляра не видит переменную?

var app = angular.module('app', [
    'templates'
]);
(function (){
    app
    .controller("templateCtrl", ["$scope", function($scope){
        $scope.templatePath = "registration/form";
        this.changeTemplate = function(path) {
            $scope.templatePath = path;
        };
    }])
    .directive("viewer", function(){
        return {
            template: "Path: " + templatePath,
        }
    });
})();

<body>
    <div class="container-fluid" ng-controller="templateCtrl">
        <viewer></viewer>
    </div>
    <script src="libs/libs.min.js"></script>
    <script src="js/main.min.js"></script>
</body>

Директива viewer не видит переменную templatePath.
Вот пример с ангуляровского сайта, где все работает.
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
Vadiok
@Vadiok
Веб разработчик
Сама по себе директива не должна видеть $scope.templatePath таким образом. Как я понял из того, что требуется вам:
// ...
template: "Path: {{ templatePath }}"
// ...


PS. У вас ссылка на пример неверная, чтобы ей делиться, надо пересохранить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Romashishka
@Romashishka Автор вопроса
Frontend developer
А как прокинуть переменную template в св-во template директивы? Он мне html текстом выводит.
app
        .controller("templateCtrl", function ($scope, $templateCache){
            $scope.templatePath = "registration/form";
            $scope.template = $templateCache.get($scope.templatePath);
        })
        .directive("templateview", function (){
            return {
                scope: {
                    template: "="
                },
                restrict: "E",
                template: "{{template}}",
                link: function (scope){
                    console.log(scope);
                }
            }
        });

<templateview data-template="template"></templateview>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект