我有问题。我现在正在使用工厂来处理我的应用程序中的两个控制器的dtas。当我点击一个链接时,它会将我路由到另一个带有特定网址的视图,这是我想要重复使用的最后一个标记,所以我试图将其切成像
window.location.pathname.split("/").slice(-1)[0]
但似乎无效,并说:$ location未定义:/ 关于如何解决这个问题的任何想法?也许是一个微不足道的错误,但是......眼睛看得越多:)
portApp.controller("itemController", ["$scope", "workFactory",
function($scope, workFactory, $stateParams) {
console.log(window.location.pathname.split("/").slice(-1)[0]);
$location.path(); // it says $location is undefined in the console
var newpath = $stateParams.itemLink;
$scope.onViewLoad = function(){
console.log(newpath);
};
}
]);
以下是jsfiddle - https://jsfiddle.net/d5bjrjov/
答案 0 :(得分:2)
在你的控制器中,你没有注射$location
;为什么它显示$location
未定义。
portApp.controller("itemController", ["$scope", "workFactory",
function($scope, workFactory, $stateParams) {
必须是
portApp.controller("itemController", ["$scope", "workFactory", '$stateParams', '$location',
function($scope, workFactory, $stateParams, $location) {
在您的州提供商
中
你有
.state('items', {
url: '/items/{itemLink}',
controller: 'itemController'
});
网址格式错误。如果您希望在网址中包含动态数据,则必须使用:itemLink
作为模式。
.state('items', {
url: '/items/:itemLink',
controller: 'itemController'
});
在您的控制器中,您可以使用$stateParams
$stateParams.itemLink