试图让我的决心注入到我的控制器中,以便能够注入到 HTML 中

Trying to get my Resolve to inject into my controller to be able to inject into the HTML

本文关键字:我的 注入 HTML 控制器 决心      更新时间:2023-09-26

这是我的索引.js文件

'use strict';
angular.module('wildenglish', ['ngAnimate', 'ngTouch', 'restangular', 'ngRoute',     'ui.bootstrap'])
  .config(function ($routeProvider, RestangularProvider) {
RestangularProvider.setBaseUrl('https://www.googleapis.com/calendar/v3/calendars/googleCalendarID');
$routeProvider
  .when('/', {
    templateUrl: 'app/main/main.html',
    controller: 'MainCtrl',
    resolve: {
            calendarEvents: function(Restangular){
                return Restangular.one('eventsAUTHKEY').get();
            }
        }
  })
  .otherwise({
    redirectTo: '/'
  });

 })

我的主控制器呢.js

'use strict';
angular.module('wildenglish')
   .controller('MainCtrl', function(Restangular, calendarEvents) {
      var self = this,
      events = calendarEvents,
      items = events.items;


});

当我尝试在HTML中使用时,我收到的错误是:

错误: [$injector:unpr] 未知提供程序: 日历事件提供程序 <- 日历事件 <- MainCtrl

所以我试图弄清楚我如何利用我从该承诺中获取的信息,我可以登录控制台以通过控制器访问 HTML

我需要服务还是工厂?那会去哪里?

提前感谢您的帮助

将解析的承诺返回的事件分配给控制器范围。您需要更改注入控制器的特性。您可以省略 Restangular,因为您正在解决路线中的承诺,但您确实需要$scope:

angular.module('wildenglish').controller('MainCtrl', function($scope, calendarEvents) {
    // i'm assuming the following logs your events to your console
    // if not you're having a problem with your Restangular request
    console.log(calendarEvents);
    // Assign calendarEvents to your $scope
    $scope.events = calendarEvents;
});

现在,您可以在 HTML 模板中使用事件(假设每个事件都有一个名为"name"的属性):

<ul>
    <li ng-repeat="event in events">{{event.name}}</li>
</ul>

抱歉,我错过了上面的答案,这已经是正确的答案。

这里有一个类似的问题:

AngularJS,解析和未知提供程序

基本上,如果您使用 routeProvider 在脚本文件中分配控制器,则不能在模板中使用 ng-controller。