UI-SREF не работает должным образом, когда якорный тег загружается из файла свойств - PullRequest
0 голосов
/ 07 февраля 2019

Запись в файле свойств

MYKEY= <a ui-sref="mystate.state">Go to my page using state</a> and <a href="/#/mypage/page">Go to my page using link/a>

Я извлек этот ключ из файла свойств и применил к нему $sce.trustAsHtml() и использовал его в html.Я мог видеть ссылку для Перейти на мою страницу, используя ссылку , но Перейти на мою страницу, используя состояние не работает должным образом, поскольку имеет ui-sref тег.Может кто-то, пожалуйста, укажите причину, почему это не работает и решение для этого.

Примечание: ui-sref работает правильно в моем проекте, когда он напрямую используется в html.

1 Ответ

0 голосов
/ 07 февраля 2019

Это может быть из-за того, что содержимое не скомпилировано, следовательно, ui-sref не работает.

Я обнаружил нижеприведенную директиву, которая компилирует и вставляет HTML-код, пожалуйста, проверьте, решает ли это вашу проблему!

Директива была получена от этого SO Ответ

var app = angular.module('myApp', []);

app.controller('MyController', function MyController($scope) {
  $scope.test = function() {
    console.log("it works!");
  }
  $scope.html = '<a ui-sref="mystate.state">Go to my page using state</a> and <a href="/#/mypage/page">Go to my page using link</a><button ng-click="test()">click</button>{{asdf}}';
});

app.directive('compile', ['$compile', function ($compile) {
    return function(scope, element, attrs) {
        scope.$watch(
            function(scope) {
                // watch the 'compile' expression for changes
                return scope.$eval(attrs.compile);
            },
            function(value) {
                // when the 'compile' expression changes
                // assign it into the current DOM
                element.html(value);
                // compile the new DOM and link it to the current
                // scope.
                // NOTE: we only compile .childNodes so that
                // we don't get into infinite loop compiling ourselves
                $compile(element.contents())(scope);
            }
        );
    };
}])
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-controller='MyController' ng-app="myApp">
  <div compile="html"></div>
</div>
...