【问题标题】:Unable to change the href value of tag using Angular.js无法使用 Angular.js 更改标签的 href 值
【发布时间】:2019-06-16 02:57:51
【问题描述】:

我在使用 Angular.ja ui-router 动态设置 a 标记值时遇到了一个问题。我在下面提供我的代码。

<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) {

    })

在这里,$scope.mastUrl 的默认值为 app.ownerinfo.owner.vew,但在服务内部我需要动态设置它。根据我当前的示例,服务成功响应中的值为app.ownerinfo.owner.new。但是a标签生成的输出HTML如下。

<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 值与默认值相同。我需要将两个值设置为相同。

【问题讨论】:

  • 你在哪里设置href值?
  • 我更新了我的代码。你可以在那里查看。

标签: angularjs angular-ui-router href


【解决方案1】:

我认为更好的方法是将 ng-click 标记用于控制器方法,并在该方法中使用 $window.location.href = 'URL';重定向用户的语法。这样,您的重定向(url 构建)将保留在控制器逻辑中。

【讨论】:

  • 是的..它可以用你的方式解决,但在这里我有根据菜单权限的要求,这些将显示给用户。
【解决方案2】:

您可以使用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

这里是帮助你的第三个答案:answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 2012-11-23
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多