我使用 ui-router 来处理我的应用状态。我需要使用resolve来确保加载控制器时存在设置值。我开始制作一个非常简单的假人:
.state('dashboard', {
url: '/dashboard',
resolve: {
simpleObj: function(){
return {value: 'simple!'};
}
},
controller: 'DashboardController',
template: '<dashboard></dashboard>',
});
在控制器中我注入了这个,就像我任何其他依赖:
angular
.module('flowlens')
.controller('DashboardController', DashboardController);
DashboardController.$inject = ['simpleObj'];
function DashboardController(simpleObj){
var vm = this;
activate();
function activate(){}
}
但是这会在unknown provider error
上引发simpleObj
此代码基于ui-router git repo上的示例代码,因此它应该可以工作。
根据其他人的说法,这通常发生在你的模板上使用ng-controller但我的模板不包含这样的东西:
%h2 Dashboard
%hr
%pre {{ $root.currentUser | json }}
.card.card-block
%my-input{type: "contact", model: "selected_contact", placeholder: "Choose Contact", allow-new: "true"}
Selected:
%pre {{ selected_contact | json }}
%h2 Settings {{ $root.settings }}
应该没有必要使用延迟解决这个承诺,因为它只是返回一个简单的值 - 正确吗?
这里的问题是什么?
编辑继续plunkr详细说明正在发生的事情。
感谢imbalind的帮助。这是一个更新的plunkr工作。检查控制台以查看打印的值。
答案 0 :(得分:2)
问题是您在两个不同的地方引用了DashboardController
两次:
$stateProvider
内,您为simpleObj
添加了解析。dashboard
指令内部,它无法了解simpleObj
是什么。错误(恕我直言)具有用于不同事物的相同控制器。你应该有两个不同的控制器。
如果您需要从这两方面访问simpleObj
,您应该考虑使用它来提供服务。
编辑:Here's您的plunker已编辑,以避免错误。缺少逻辑。