尽管在$ scope变量中存在路由器conf和state,ui-sref也不会生成href

时间:2017-01-03 16:58:22

标签: javascript angularjs angular-ui-router

我在理解哪里可以找到错误方面遇到一些问题。我有一个存储在$ scope变量中的状态。 检查页面,我看到正确的状态存储在html中的ui-sref属性中。带有一个奇怪的生成的注释== $ 0和另一个非常奇怪的行为是,如果我硬编码状态名称(所以不保持它范围变量),它可以工作,我可以获得href!

enter image description here

我在html模板中有一个ui-view,以及相关的状态:

.state('push', {
            url: "/push/:type",
            templateUrl: "firstday__push.do",
            controller: 'PushController'
})

这是我的控制者:

(function (module) {
"use strict";
var HeaderController = function ($scope, $rootScope, $state) {
    console.log("Header Controller");
    $scope.previous = "";

    $scope.showBack = function () {
       if ($state.current.name !== 'home') {
            return true;
        }

        return false;
    };

    $scope.goTo = function (dest) {
        if(dest) {
            $state.go(dest);    
        } else {
            $state.go('home');
        }

    };

    $rootScope.$on("$stateChangeSuccess", function (ev, to, toParams, from, fromParams) {
        $scope.previous = from.name;
        console.log($scope.previous);
        console.log(from);
    });

    var nanobar = new Nanobar({
        classname : 'progress'
    });
};

module.controller("HeaderController", HeaderController);

}(angular.module("firstday_app")));

并在模板中:     

从截图中我总能看到正确的值,所以我真的不知道我的代码中有什么问题。有什么想法吗?

提前感谢您的宝贵支持!

1 个答案:

答案 0 :(得分:0)

这是因为您尝试仅将状态名称分配给$scope.previous属性。如果该状态名称是您的push状态,则它将不是有效状态,因为push需要type参数才能将ui-sref转换为有效状态:

ui-sref="push({type:'someType'})"

更好的方法(假设你总是想要转到以前的状态)可能是使用一个函数来点击发送用户:

$scope.goPrevious = function(){
    // Make sure $window is injected in your controller.
    $window.history.back();
}

你的点击指向:

ng-click="goPrevious()"