加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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可用于阻止路由.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读