Javascript $state.go方法未切换到其他状态-angularjs

Javascript $state.go方法未切换到其他状态-angularjs,javascript,node.js,angularjs,states,Javascript,Node.js,Angularjs,States,在我的控制器中,我有$state.go('purchase'),但我有以下错误: 错误:无法从状态“”解析“购买”。 但最初,我在states.js文件中定义了url'到'/home',该文件的状态为“home”。为什么我的状态转换没有发生?请让我知道我错在哪里 states.js /** * Dashboard routes. */ define(['./templates'], function(templates) { var mod = angular.module("ite

在我的控制器中,我有
$state.go('purchase'),但我有以下错误:

错误:无法从状态“”解析“购买”。

但最初,我在states.js文件中定义了url
'
'/home'
,该文件的状态为“home”。为什么我的状态转换没有发生?请让我知道我错在哪里

states.js

/**
 * Dashboard routes.
 */
define(['./templates'], function(templates) {
    var mod = angular.module("item.states", ["ui.router"]);
    console.log("Inside item home states");

    var StateProvider = function($stateProvider, $urlRouterProvider) {
         $urlRouterProvider.when('', '/home');
        $stateProvider            
            .state("item", {
                url: '/home',
                template: templates.home,
                controller : 'controller.item.home.main'
            })
            .state("purchase", {
                url: '/purchase',
                template: templates.purchase,
                controller : 'controller.item.home.main'
            });
    }
    StateProvider.$inject = ["$stateProvider", "$urlRouterProvider"];

    mod.config(StateProvider);
    return mod;
});
function _purchase(_event){
console.log("Clicked purchase button");
$state.go('purchase');
}
define(['./controllers','./states'], function(controllers,states) {
  var mod = angular.module("item.home", ['common.services.ItemService',
     'common.filters.format']);
  mod.controller('controller.item.home.main', controllers.main);
  console.log("Inside item home main");
  return mod;
});
controller.js

/**
 * Dashboard routes.
 */
define(['./templates'], function(templates) {
    var mod = angular.module("item.states", ["ui.router"]);
    console.log("Inside item home states");

    var StateProvider = function($stateProvider, $urlRouterProvider) {
         $urlRouterProvider.when('', '/home');
        $stateProvider            
            .state("item", {
                url: '/home',
                template: templates.home,
                controller : 'controller.item.home.main'
            })
            .state("purchase", {
                url: '/purchase',
                template: templates.purchase,
                controller : 'controller.item.home.main'
            });
    }
    StateProvider.$inject = ["$stateProvider", "$urlRouterProvider"];

    mod.config(StateProvider);
    return mod;
});
function _purchase(_event){
console.log("Clicked purchase button");
$state.go('purchase');
}
define(['./controllers','./states'], function(controllers,states) {
  var mod = angular.module("item.home", ['common.services.ItemService',
     'common.filters.format']);
  mod.controller('controller.item.home.main', controllers.main);
  console.log("Inside item home main");
  return mod;
});
main.js

/**
 * Dashboard routes.
 */
define(['./templates'], function(templates) {
    var mod = angular.module("item.states", ["ui.router"]);
    console.log("Inside item home states");

    var StateProvider = function($stateProvider, $urlRouterProvider) {
         $urlRouterProvider.when('', '/home');
        $stateProvider            
            .state("item", {
                url: '/home',
                template: templates.home,
                controller : 'controller.item.home.main'
            })
            .state("purchase", {
                url: '/purchase',
                template: templates.purchase,
                controller : 'controller.item.home.main'
            });
    }
    StateProvider.$inject = ["$stateProvider", "$urlRouterProvider"];

    mod.config(StateProvider);
    return mod;
});
function _purchase(_event){
console.log("Clicked purchase button");
$state.go('purchase');
}
define(['./controllers','./states'], function(controllers,states) {
  var mod = angular.module("item.home", ['common.services.ItemService',
     'common.filters.format']);
  mod.controller('controller.item.home.main', controllers.main);
  console.log("Inside item home main");
  return mod;
});
我的服务器端jade

extends ../layouts/default
block content
    div(ng-controller="controller.item.home.main as main" ng-init="item= #{JSON.stringify(item)}")
        .masterhead.segment
            .ui.page.grid.stackable
                .row.ui.basic.segment
                    .four.wide.column.ui.center.aligned
                        img.ui.image.rounded(src="/images/itemicon.png")
                        h2() !{item.name} - !{item.activeseason.name}
                    .twelve.wide.column
                        .ui.small.orange.button(id="purchaseBtn" ng-click="purchase($event)”)
                                | Purchase
        div.ui.page.grid(ui-view)

谢谢。

我不确定您使用的语法以及为什么要在模板中定义路由,但我建议使用另一种方法,在“模块文件夹”或根文件夹上创建一个文件,并以更“通用”的方式定义路由,如下所示:

'use strict';

//Setting up route
angular.module('mainModule').config(['$stateProvider',
    function($stateProvider) {
        // main module state routing
        $stateProvider.
        state('home', {
            url: '/home',
            templateUrl: 'controller.item.home.main', //I'd recommend to use plain html files, instead something rendered in the server
            controller:'HomeController'
        }).
        state('purchase', {
            url: '/purchase',
            templateUrl: 'templates.purchase', 
            controller: 'purchaseController'
        });
    }
]);
我猜在你的家庭控制器中:

angular.module('mainModule').controller('HomeController', ['$scope','$state',
    function($scope,$state) {
        $scope.onclick = function(){
            $state.go('purchase');
        };
}]);

另一方面,您的状态与服务器端完全不相关。

我不确定您使用的语法以及为什么要在模板中定义路由,但我建议使用另一种方法,在“模块文件夹”或根文件夹上创建一个文件,并以更“通用”的方式定义路由,如下所示:

'use strict';

//Setting up route
angular.module('mainModule').config(['$stateProvider',
    function($stateProvider) {
        // main module state routing
        $stateProvider.
        state('home', {
            url: '/home',
            templateUrl: 'controller.item.home.main', //I'd recommend to use plain html files, instead something rendered in the server
            controller:'HomeController'
        }).
        state('purchase', {
            url: '/purchase',
            templateUrl: 'templates.purchase', 
            controller: 'purchaseController'
        });
    }
]);
我猜在你的家庭控制器中:

angular.module('mainModule').controller('HomeController', ['$scope','$state',
    function($scope,$state) {
        $scope.onclick = function(){
            $state.go('purchase');
        };
}]);
另一方面,您的状态与服务器端完全不相关。

错误是因为, 在main.js中,我没有包含模块“item.states”

define(['./controllers','./states'], function(controllers,states) {
  var mod = angular.module("item.home", ['common.services.ItemService',
     'common.filters.format','item.states']);
  mod.controller('controller.item.home.main', controllers.main);
  console.log("Inside item home main");
  return mod;
});
这个错误是因为,, 在main.js中,我没有包含模块“item.states”

define(['./controllers','./states'], function(controllers,states) {
  var mod = angular.module("item.home", ['common.services.ItemService',
     'common.filters.format','item.states']);
  mod.controller('controller.item.home.main', controllers.main);
  console.log("Inside item home main");
  return mod;
});
使用转换到

$state.transitiono('purchase')

更改代码中的语法错误

            url: '/purchase,

使用转换到

$state.transitiono('purchase')

更改代码中的语法错误

            url: '/purchase,