$ state.go方法不切换到其他状态 – angularjs

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

Error: Could not resolve from state ''. Error: Could not resolve 'purchase' from state ''.

但是最初,我在我的文件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; }); 

controller.js

 function _purchase(_event){ console.log("Clicked purchase button"); $state.go('purchase'); } 

main.js

 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; }); 

我的服务器端玉

 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) 

谢谢。

使用过渡到

$ state.transitionTo( '购买')

并更改yor代码中的语法错误

  url: '/purchase, 

  url: '/purchase', 

我不确定你正在使用的语法,为什么在模板中定义你的路由,但我build议另一种方式来做到这一点,在“模块文件夹”或根文件夹中创build一个文件,并在更多'一般'的方式如下:

 '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; });