我在理解哪里可以找到错误方面遇到一些问题。我有一个存储在$ scope变量中的状态。 检查页面,我看到正确的状态存储在html中的ui-sref属性中。带有一个奇怪的生成的注释== $ 0和另一个非常奇怪的行为是,如果我硬编码状态名称(所以不保持它范围变量),它可以工作,我可以获得href!
我在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")));
并在模板中:
从截图中我总能看到正确的值,所以我真的不知道我的代码中有什么问题。有什么想法吗?
提前感谢您的宝贵支持!
答案 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()"