0

私のアプリケーションには、頻繁に変更されないデータ (カテゴリ) があり、複数のコントローラーでアクセスする必要があります。

これらのカテゴリを保持する AppCtrl で「ルート」コントローラーをラップするのが賢明だと思いました。私が抱えている問題は、ルートを持たずに AppCtrl の解決をどのようにセットアップするかということです。

ここに私が今持っているコードがありますが、カテゴリープロバイダーは定義されていません:

'use strict';

var AppCtrl = ViewsDashboardApp.controller('AppCtrl', ['$scope', 'Categories',
  function($scope, Categories) {
    console.log(Categories);
  }
]);

AppCtrl.resolve = {
  Categories: ['$q', 'Category',
    function($q, Category) {
      var defer = $q.defer();
      Category.query(function(categories) {
        defer.resolve(categories);
      }, function(data) {
        defer.reject(data);
      });
      return defer.promise;
    }
  ]
};

しかし、このコードを実行すると、次のようになります。

Error: Unknown provider: CategoriesProvider <- Categories

AppCtrl が解決を認識しないのはなぜですか? 特にカテゴリ?ありがとう。

4

1 に答える 1

0

サービスを使用するという@Valentynの提案は、ある意味でうまくいきました。

My Data Service は、次のようになります。Category のファクトリと、Categories を提供するサービスです。

angular.module('CategoryService', ['ngResource'])
 .factory('Category', ['$resource',
   function($resource) {
   return $resource('url');
 }])
 .service('Categories', ['$q', 'Category',
  function($q, Category) {
   var defer = $q.defer();
   Category.query(function(categories) {
    defer.resolve(categories);
   }, function(data) {
    defer.reject(data);
   });
  return defer.promise;
 }]);

次に、カテゴリが必要な任意のルートで、カテゴリ サービスをリクエストして、Promise または解決されたデータを返すことができます。

resolve: {
 Categories: ['Categories',
   function(Categories) {
     return Categories;
   }]

これにより、他のコントローラーをナビゲートするときにアプリが 2 回目のカテゴリー要求を行うことができなくなります。

于 2013-06-07T11:44:33.970 に答える