尝试使用UI-Router在控制器中注入解决方案时,为什么会出现提供商错误



我无法在控制器中注入UI路由的属性。它给予

错误:$注射器:unpr未知提供商

当我在状态定义对象中使用控制器属性为以下

.state('widget', {
    url: '/widgets',
    template: '<h1>{{name}}</h1>',
    controller: function(widget, $scope) {
      $scope.name = widget.name;
    },
    resolve: {
        // standard resolve value promise definition
        widget: function() {
            return {
                name: 'myWidget'
            };
        },
        // resolve promise injects sibling promise
        features: function(widget) {
            return ['featureA', 'featureB'].map(function(feature) { 
                return widget.name+':'+feature;
            });
        }
    }
});

然后它运行良好,我能够在控制器中获得 widget ,并且能够在HTML中使用。

请参阅小提琴以获取代码。

http://jsfiddle.net/sunilmadaan07/ugsx6c1w/8/

可能是我犯了一个愚蠢的错误。在发布此问题之前,我已经尝试使用简单对象返回,请向属性承诺对象。

预先感谢。

您无法使用所使用的代码在指令中获得已解决的数据。基本上,您正在尝试使用Angular1.3.x。

的较旧版本实现基于组件的结构。

您有两个选择来实现这一目标。

  • 创建路由控制器,然后您可以作为本地依赖性访问控制器,然后将该依赖项用作绑定到指令。这是示例-http://plnkr.co/edit/topmluxc7ghxteyl0ifj?p=preview

  • 将角版升级到1.5.x,并使用"ui-router-route-to-components": "^0.1.0"

在此工作示例 - http://jsfiddle.net/ugsx6c1w/25/

为了使控制器能够使用解析器,它应该是路由组件(仅在UI路由器1.x中)或路由控制器。

widgetfeatures是本地依赖项,它们未在喷油器中注册,在应用程序中的任何地方都没有路由控制器/组件。

如下所述,解析器可以传递给UI路由器0.3.x中的嵌套组件,并直接注入到1.x的路由组件中。

相关内容

最新更新