在ngRoute中提供服务

时间:2015-01-19 18:54:24

标签: angularjs

此代码来自angularjs TodoMVC。您可以看到routeConfig的resolve对象,它从localStorage获取todos(如果使用了localStorage)。 localStorage代码在另一个文件todoStorage.js中的服务中创建。我的问题是,在这个配置中,todo记录的获取是如何提供该服务(或者一般的代码如何)?我不得不以某种方式为下面的代码提供服务吗?

angular.module('todomvc', ['ngRoute'])
    .config(function ($routeProvider) {
        'use strict';

        var routeConfig = {
            controller: 'TodoCtrl',
            templateUrl: 'todomvc-index.html',
            resolve: {
                store: function (todoStorage) {
                    // Get the correct module (API or localStorage).
                    return todoStorage.then(function (module) {
                        module.get(); // Fetch the todo records in the background.
                        return module;
                    });
                }
            }
        };

1 个答案:

答案 0 :(得分:0)

resolve property是键值对的哈希/字典。

键是可用于注射的值的最终名称。值可以是一个可注入的函数,Angular会自动将依赖项传递给它。

所以当你看到这段代码时:

store: function (todoStorage) { ... }

Angular会自动从参数名称推断'todoStorage'服务,然后自动注入它。当然它也支持数组表示法:

store: ['todoStorage', function (todoStorage) { ... }]

在Angular中,几乎所有东西都可以dependency injected