Невозможно изменить значение href тега, используя Angular.js - PullRequest
0 голосов
/ 13 июня 2019

Я столкнулся с одной проблемой при динамическом задании значения тега a с помощью Angular.ja ui-router. Я предоставляю свой код ниже.

<a ui-sref="{{mastUrl}}" ng-show="isMaster">Master Info</a>
$scope.mastUrl='app.ownerinfo.owner.vew';
var url='../service/admin/login/checkmenu.php';
    var method='GET';
    var data='';
    DataService.connectToServerSideScript(method,url,data)
    .then(function(response) {
        console.log('menu',response);
        if (response.length > 0) {
            angular.forEach(response,function(obj){
                if (obj.user_type==2) {
                    $scope.isUser=false;

                    if (obj.isMast==0) {
                        $scope.isMaster=false;
                    }else{
                        $scope.isMaster=true;
                        if (obj.mastUrl !='') {
                            $scope.mastUrl=obj.mastUrl;
                        }
                    }
                }
            })
        }
    },function(error) {

    })

Здесь у меня есть значение по умолчанию app.ownerinfo.owner.vew для $scope.mastUrl, но внутри службы мне нужно установить его динамически. Согласно моему текущему примеру это значение app.ownerinfo.owner.new внутри ответа об успешном обслуживании. Но сгенерированный выходной HTML тега a выглядит так, как показано ниже.

<a ui-sref="app.ownerinfo.owner.new" ng-show="isMaster"
   href="#!/ownerinfo/owner/view">Master Info</a>

Мой код маршрутизации приведен ниже.

.state('app.ownerinfo',{
        url:'/ownerinfo',
        templateUrl:'view/ownerinfo.html',
        controller:'ownerinfoController'
    })
    .state('app.ownerinfo.owner',{
        url:'/owner',
        templateUrl:'view/owner.html',
        controller:'ownerController'
    })
    .state('app.ownerinfo.owner.vew',{
        url:'/view',
        templateUrl:'view/ownerview.html',
        controller:'ownerviewController'
    })
    .state('app.ownerinfo.owner.new',{
        url:'/new',
        templateUrl:'view/newowner.html',
        controller:'newownerController'
    })

Здесь значение ui-serf установлено так, как ожидается, но значение href совпадает со значением по умолчанию. Мне нужно установить оба значения одинаково.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Вы можете использовать директиву ui-state, которая разрешает динамические ссылки:

<a data-ui-state="selectedState.state" data-ui-state-params="{'myParam':aMyParam}">
       Link to page {{selectedState.name}} with myParam = {{aMyParam}}
  </a>

Вот github обсуждение той же проблемы: github

А вот и третий ответ, который вам поможет: ответ

0 голосов
/ 13 июня 2019

Я думаю, что лучший способ - это использовать тег ng-click для метода контроллера и в этом методе использовать $ window.location.href = 'URL';синтаксис для перенаправления пользователя.Таким образом, ваше перенаправление (создание URL) остается в логике контроллера.

...