Доступ к области действия из ng-шаблона

Используя AngularJS, я хочу получить доступ к переменной области изнутри <script type="text/ng-template",

<script type="text/ng-template" id="firstDialogId">
    <div class="ngdialog-message" align="center" id="download">
        <h4 ng-show=isFrench>Télécharger la cartographie</h4>
        <h4 ng-show=isEnglish>Download cartography</h4>
        <a href="../downloads/PDF/{{currentLanguage}}/{{currentCartography}}.pdf" download>
            <img  src="../style/images/pdf-icon.png" alt="Download PDF" width="30%" height="30%">
        </a>   
        <a href="../downloads/VSD/{{currentCartography}}.vsd" download>
            <img border="0" src="../style/images/vsd-icon.png" alt="Download VSD" width="30%" height="30%">
        </a>   
        <a href="../downloads/PNG/{{currentLanguage}}/{{currentCartography}}.png" download>
            <img border="0" src="../style/images/PNG-icon.png" alt="Download PNG" width="30%" height="30%">
        </a>   

         <div class="ngdialog-buttons">
             <button type="button" class="ngdialog-button ngdialog-button-primary" ng-click="closeThisDialog('button')">Close</button>
         </div>
    </div>
</script>

isFrench а также isEnglish 2 логических значения от моего контроллера.

То же самое для currentCartography а также currentLanguageэто строки из моего контроллера.

Я также попробовал с геттером внутри и снаружи контроллера, тот же результат.

3 ответа

Решение

Для тех, кто попадает в ту же проблему:

Используя ngDialog, нам нужно уточнить, что мы хотим использовать область. В моем случае я добавил функции открытия диалога в моем контроллере, мне нужно было отредактировать ту, которую я использую, чтобы добавить scope: $scope, строка следующим образом:

$scope.openPlainCustomWidth = function () {
    $rootScope.theme = 'ngdialog-theme-plain custom-width';
    ngDialog.open({
        template: 'firstDialogId',
        controller: 'InsideCtrl',
        className: 'ngdialog-theme-plain custom-width',
        scope: $scope, // this line wasn't here before
        closeByDocument: false
    });
};

Три вещи, которые вы можете попробовать

  1. использование ng-href вместо href

  2. для нг-шоу удалить двойные фигурные {{

  3. если выше двух не работает, используйте $parent (только если вы не используете controller-as)

Ты используешь ng-show неправильно, он не использует {{}} выражения.

Пытаться: ng-show="isFrench"

Помимо этого не ясно, что вы спрашиваете

Другие вопросы по тегам