ui 路由器解析抛出错误,找不到提供者
ui router resolve is throwing error provider not found
我这里有一个 ui -路由器状态
var AccountParentState = {
url: "/Account",
views: accountrootview,
stickA: true,
},
AccountAddState = {
url: "/add",
views: addaccountview,
controller: "account-controller",
resolve: {
Name: function () {
return "Joydeep";
}
}
};
$stateProvider
.state('account', AccountParentState)
.state("account.add", AccountAddState)
这是我的控制器:
angular.module('ngApp').controller('account-controller', ['$scope', '$state', "account", "plugin-factory", "Name", function ($scope
, $state
, account
, plugins, Name) {
console.log(Name);
}]);
当我尝试解析 account-controller
中的 Name
时。它抛出的错误是:
Unknown provider: NameProvider <- Name <- account-controller
我的问题是如何解决这种情况。或者使用 resolve
属性 解析 ui-路由器状态中的数据。
为了帮助您了解问题,我 created working plunker 确实使用了与上述状态类似的定义:
var AccountParentState = {
url: "/Account",
views: { '' :
{ template: 'Account state <hr/><div ui-view=""></div>',} },
stickA: true,
},
AccountAddState = {
url: "/add",
//views: addaccountview,
templateUrl: 'tpl.html',
controller: "account-controller",
resolve: {
Name: function() {
return "Joydeep";
}
}
};
$stateProvider
.state('account', AccountParentState)
.state("account.add", AccountAddState)
工厂和控制器:
.factory('account', function(){return {}})
.factory('plugin-factory', function(){return {}})
.controller('account-controller',
['$scope', '$state', "account", "plugin-factory", "Name"
, function($scope, $state, account, plugins, Name) {
console.log(Name);
}
])
这是有效的,因为控制器由 UI-Router
实例化,作为状态转换的一部分。
另一方面,如果我们将在 index.html(状态定义之外)
中使用此(参见 forked broken version)行扩展该示例
<div ng-controller="account-controller"></div>
<div ui-view=""></div>
问题会出现。为什么?因为现在控制器 而不是 由 UI-Router
管理。它不是由其基础架构注入的,也没有提供配置值 'Name'
。这是 "plain angular" 风格..
我这里有一个 ui -路由器状态
var AccountParentState = {
url: "/Account",
views: accountrootview,
stickA: true,
},
AccountAddState = {
url: "/add",
views: addaccountview,
controller: "account-controller",
resolve: {
Name: function () {
return "Joydeep";
}
}
};
$stateProvider
.state('account', AccountParentState)
.state("account.add", AccountAddState)
这是我的控制器:
angular.module('ngApp').controller('account-controller', ['$scope', '$state', "account", "plugin-factory", "Name", function ($scope
, $state
, account
, plugins, Name) {
console.log(Name);
}]);
当我尝试解析 account-controller
中的 Name
时。它抛出的错误是:
Unknown provider: NameProvider <- Name <- account-controller
我的问题是如何解决这种情况。或者使用 resolve
属性 解析 ui-路由器状态中的数据。
为了帮助您了解问题,我 created working plunker 确实使用了与上述状态类似的定义:
var AccountParentState = {
url: "/Account",
views: { '' :
{ template: 'Account state <hr/><div ui-view=""></div>',} },
stickA: true,
},
AccountAddState = {
url: "/add",
//views: addaccountview,
templateUrl: 'tpl.html',
controller: "account-controller",
resolve: {
Name: function() {
return "Joydeep";
}
}
};
$stateProvider
.state('account', AccountParentState)
.state("account.add", AccountAddState)
工厂和控制器:
.factory('account', function(){return {}})
.factory('plugin-factory', function(){return {}})
.controller('account-controller',
['$scope', '$state', "account", "plugin-factory", "Name"
, function($scope, $state, account, plugins, Name) {
console.log(Name);
}
])
这是有效的,因为控制器由 UI-Router
实例化,作为状态转换的一部分。
另一方面,如果我们将在 index.html(状态定义之外)
中使用此(参见 forked broken version)行扩展该示例<div ng-controller="account-controller"></div>
<div ui-view=""></div>
问题会出现。为什么?因为现在控制器 而不是 由 UI-Router
管理。它不是由其基础架构注入的,也没有提供配置值 'Name'
。这是 "plain angular" 风格..