我是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/#/
,但我的问题仍然存在。
答案 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]