angularjs – 来自解析对象的属性未传递给控制器??,未知提供程序
发布时间:2020-12-17 17:13:08 所属栏目:安全 来源:网络整理
导读:在投票之前,是的,这个问题已经在这里被提出并回答了,但答案并不令人满意.他们都正确地建议在路由配置中添加控制器,但这不是这种情况. routeProvider的解析对象xxx的预期行为将被注入控制器: var app = angular.module('X',[]).config(['$routeProvider',fun
在投票之前,是的,这个问题已经在这里被提出并回答了,但答案并不令人满意.他们都正确地建议在路由配置中添加控制器,但这不是这种情况.
routeProvider的解析对象xxx的预期行为将被注入控制器: 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.条目. 相反,上面的代码提取失败了: 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指令声明,但仅在路由配置中定义. 解决方法
如果使用同一控制器在路由配置中有多个条目,则在控制器中注入的所有属性都必须出现在resolve对象的所有实例中:
var app = angular.module('X',function ($routeProvider) { $routeProvider .when('/',resolve: { xxx: function () { return 'XXX from routing config.'; } another: // ... } }) .when('/page2',templateUrl: 'x/p2.html',xxx) { console.log('xxx = '+xxx); }); 解析对象不一定是promises,从上面的函数返回的直接数据也可以工作.如果其中一个被拒绝,则Promise可用于阻止路由. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |