gpt4 book ai didi

angularjs - 解析对象的属性未传递给 Controller ​​,未知提供程序错误

转载 作者:行者123 更新时间:2023-12-03 09:30:09 25 4
gpt4 key购买 nike

在投票否决之前,是的,这个问题已经在这里提出并回答了,但答案并不令人满意。他们都正确地建议在路由配置中添加 Controller ,但这里不是这种情况。

routeProvider 的 resolve 的预期行为对象 xxx将被注入(inject) Controller :

var app = angular.module('X', [])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/',{
controller:'XCtrl',
templateUrl: 'x.html',
resolve: {
xxx: function () {
return 'XXX from routing config.';
}
}
})
}])
.controller('XCtrl', function($scope, xxx) {
console.log('xxx = '+xxx);
});

控制台应该得到 xxx = XXX from routing config.入口。

相反,上面的代码提取失败:
Error: [$injector:unpr] Unknown provider: xxxProvider <- xxx
http://errors.angularjs.org/1.2.10/$injector/unpr?p0=xxxProvider%20%3C-%20xxx
.. etc.
XCtrl在 HTML 中未使用 ng-controller 声明指令但仅在路由配置中定义。

最佳答案

如果您在使用同一 Controller 的路由配置中有多个条目,则注入(inject) Controller 中的所有属性都必须出现在 resolve 的所有实例中。目的:

var app = angular.module('X', [])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/',{
controller:'XCtrl',
templateUrl: 'x.html',
resolve: {
xxx: function () {
return 'XXX from routing config.';
}
another: // ...
}
})
.when('/page2',{
controller:'XCtrl',
templateUrl: 'x/p2.html',
resolve: {
xxx: function () {
return 'XXX from routing config.';
}
}
})
}])
.controller('XCtrl', function($scope, xxx) {
console.log('xxx = '+xxx);
});
resolve对象不必是 promise ,从上述函数返回的直接数据也可以。如果其中一个被拒绝,Promise 对阻止路由很有用。

关于angularjs - 解析对象的属性未传递给 Controller ​​,未知提供程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com