2014-10-10 41 views
1

在我的控制,我有$state.go('purchase');,但我有以下錯誤:

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

但在最初,我定義的URL ''在我的文件states.js,其中轉入狀態「家」 '/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) 

謝謝。

回答

0

錯誤是因爲, 在我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; 
}); 
2

我不知道你正在使用的語法,爲什麼定義模板中的路線,但我建議另一種方式來做到這一點,在「模塊文件夾」或你的根文件夾創建一個文件和定義航線如下所示的更「一般」的方式:

'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'); 
     }; 
}]); 
在另一側的狀態不相關的服務器端都

3

使用過渡到

$ state.transitionTo('購買「)

和改變在產油雖代碼語法錯誤

  url: '/purchase, 

url: '/purchase', 
相關問題