如何在Angular.JS中访问$ routeProvider配置中的工厂数据对象?

时间:2016-01-24 16:06:32

标签: javascript angularjs

我正在尝试创建一个Angular.JS计算器,如果某个工厂Data对象为空,它将返回到根页面。我的问题是,我无法弄清楚如何访问Data.Terms对象,以查看$routeProvider路径下的/condition配置中是否为空。

在下面的代码中,显示if (!Data.Terms)的部分无效。我希望它返回存储在工厂数据函数中的术语的值:

// Creating the module
var myApp = angular.module("app-calculator", ["calculatorControls", "ngRoute"])
    .config(function ($routeProvider) {

        $routeProvider.when("/", {
            controller: "termsController",
            controllerAs: "vm",
            templateUrl: "/content/templates/termsView.html"
        });

        $routeProvider.when("/condition", {
            controller: "conditionController",
            controllerAs: "vm",
            templateUrl: "/content/templates/conditionView.html",
            resolve: {
                mess: function ($location) {

                    // Check if the Data.Terms field has been completed,
                    // if not then return to the root path.
                    if (!Data.Terms) {
                        $location.path('/');
                    }
                    //

                }
            }
        });

// my Data
myApp.factory('Data', function () {
    var Terms = '';

    return {
        Terms: Terms,
    }
})

1 个答案:

答案 0 :(得分:1)

您应该在解析部分注入Data作为依赖项。

var myApp = angular.module("app-calculator", ["calculatorControls", "ngRoute"])
    .config(function ($routeProvider) {

        $routeProvider.when("/", {
            controller: "termsController",
            controllerAs: "vm",
            templateUrl: "/content/templates/termsView.html"
        });

        $routeProvider.when("/condition", {
            controller: "conditionController",
            controllerAs: "vm",
            templateUrl: "/content/templates/conditionView.html",
            resolve: {
                mess: function ($location, Data) {

                    // Check if the Data.Terms field has been completed,
                    // if not then return to the root path.
                    if (!Data.Terms) {
                        $location.path('/');
                    }
                    //

                }
            }
        });