2016-01-08 147 views
1

我一直在尝试为一个项目设置基本的AngularJS功能,但是在涉及到角路由时一直打砖墙。两者都是1.4.8版本。我目前使用一饮而尽,需要来连接我的JS,这是我主要的JavaScript文件

// =require ../components/jquery/dist/jquery.min.js 

// =require ../components/angular/angular.js 
// =require ../components/angular-route/angular-route.js 

$(document).ready(function() { 

    // =require app/app.js 

}); // Doc ready is done! 

我的app.js文件

var app = angular.module('myApp', ['ngRoute']); 

app.controller("ctrl", ["$scope", 'ngRoute', function($scope) { 

    $scope.test = "It works!"; 

}]); 

我检查所有文件被正确拼接。 ng-app和ng-controller属性位于我的HTML文件中。我尝试添加和删除ngRoute注入并切换文件的顺序,但无济于事。这很令人沮丧,因为我几乎以完全相同的方式使用了Angular 1.4.5,但没有出现这些问题,但即使返回,我也无法在这里复制相同的内容。但是我的HTML中的{{test}}变量仍然没有渲染,像{{2 + 3}}这样的基本操作也不是。

编辑:这里是链接到目前我收到原始的错误消息:http://tinyurl.com/zx3k85f

编辑2:

<html lang="en" ng-app="myApp"> 
    <body ng-controller="ctrl"> 

    </body> 
</html> 

:我的HTML代码,调用了应用程序和控制器的部分我使用nunjucks进行HTML动态生成,尽管我已经改变了这个语法,所以它不会与Angular的双花括号冲突。

回答

2

您不能注入模块作为控制器内部的依赖关系,您应该从控制器DI内联数组中删除'ngRoute'

app.controller("ctrl", ["$scope", , function($scope) { 

更新

基本上真正的问题是要装入使用requirejs(懒洋洋)您的角度成分的脚本,所以当你有ng-app="myApp"与模块名称开始寻找myApp模块,该模块尚未加载,因此会引发错误。

所以我建议你不要使用ng-app指令在页面加载时启动角度。相反,您应该等到所有与角加载相关的脚本,然后使用angular.bootstrap方法懒惰地引导角应用。

代码

$(document).ready(function() { 
    requirejs(["app/app.js"], function(util) { 
     angular.bootstrap(document, ['myApp']); 
    }); 
}); 
+0

我试过这个,但仍然收到相同的错误。如果有帮助,我会更新原始邮件以包含特定的错误消息。 –

+0

@MaxAntonucci看看我的答案编辑..将修复你的问题.. –

+0

我实际上使用gulp-include进行文件连接,虽然在页面加载之前加载角度脚本的问题仍然存在。添加requireJS后,我尝试了上述解决方案,但遇到无尽的console.log错误。我为app.js文件中的角色脚本创建了更多// = require代码,因此它们在页面加载后启动。不再发生任何错误,但是由于数据绑定不起作用,角仍然不起作用。 –

0

ngRoute是需要在模块配置部分要配置在使用前一个提供者。在控制器内使用它没有任何意义。这里,将工作的版本:

angular.module('myApp', ['ngRoute']); 

angular.module('myApp').controller("ctrl", ["$scope",function($scope) { 

$scope.test = "It works!"; 

}]); 

此外,您需要使用指令ng-app=myapp在html元素,你打算使你的应用程序调用你的模块。

+0

谢谢你的建议,虽然我把它完全按照这种方式,仍然有相同的错误:( –

+0

你能否把你正在使用的HTML –

相关问题