Angular在我的路线中没有呼叫解决

时间:2015-07-02 09:52:00

标签: javascript angularjs

我是Angular的新人,我试图理解基本知识 我的项目就像Mean。

我的router.js

router.get('/', function (req, res, next) {
    res.render('index', {});
});

我的Angularfile.js

var app = angular.module('ibApp', ['ngRoute','ui.router']);

app.config([
    '$stateProvider',
    '$urlRouterProvider',
    function ($stateProvider, $urlRouterProvider) {
        $stateProvider.state('home', {
            url: '/',
            resolve: {
                foo: [function () {
                    console.log('inside')
                }]
            }
        });

        $urlRouterProvider.otherwise('home');
    }]);



app.controller("MyCtrl",['$scope',function($scope) {
    console.log("here!");
}]);

我的index.html

 <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular-route.min.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.js"></script>
    <script src="/javascripts/angularApp.js"></script>

但是当我得到/(索引)路线时,我还没有console.log(&#39;在&#39;里面),但我只有console.log(&#34;这里&#34; );

我也试过http://localhost:3000/#/,但我的问题仍然存在。

1 个答案:

答案 0 :(得分:2)

Resolve提供程序不会在您的情况下执行该功能。函数本身作为依赖项对象返回,因为从不调用该函数。如果调用该函数,则将函数的返回值视为依赖项。

尝试:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="clock">09:00:00 AM</div>
<a id="newtime" href=#>add time</a>

注意函数声明末尾的offset以调用函数。

您也可以使用名称返回函数,并调用控制器内的函数。

请注意,发生这种情况的原因是因为resolve: { foo: [function () { console.log('inside') }()] } 没有提供作为解析对象的函数(它将隐式执行函数并将结果分配给()),而是{{1声明为数组,函数只是foo。你也可以 在控制器中调用foo函数。

根据您的评论,您尝试执行服务功能并返回结果。在这种情况下,您应该确保该模块可以使用该服务,然后只需调用它。没有必要尝试将服务注入到您的解析函数中,就像使用控制器声明一样。

即。而不是做:

foo

你可以这样做:

foo[0]

http://plnkr.co/edit/FOgVgz5kvfuzPAAgtsVC?p=preview