我有一个使用Smarty构建页面的AngularJS应用程序。页面顶部有ng-agg
标记参数,正在编译基本的AngualarJS模板,我的模块的.run
方法正在运行,但我的控制器没有被调用
启动html
<!DOCTYPE html>
<html ng-app="myapp">
...
$ routeProvider
angular.module('myapp', function($routeProvider, $locationProvider) {
$routeProvider
.when('/index.php?page=tutorial', {controller: 'MyappTutorial'})
.when('/index.php?page=home', {controller: 'MyappHome'})
.when('/index.php?page=login', {controller: 'MyappLogin'})
})
教程控制器
var MyappTutorial = function ($scope, $location) {
console.log('tutorial');
}
当我访问页面 index.php?page = tutorial 时,我构建了我的角度页面模板,并在myapp.run()
中构建了 console.log()方法被触发,但教程控制器没有运行。
我该如何调试呢?我猜这是routeProvider出错了,有没有办法检查使用哪个控制器,如果有的话。
我的javascript控制台中没有出现任何错误。
这是在Chrome上运行的,来自Mac上的本地开发Ubuntu虚拟机。
答案 0 :(得分:3)
我认为您可能想重新考虑如何构建项目。我试过像你这样的东西,这对我来说似乎并不合适(并且无法使其正常工作)。
我正在使用php(在我的工作之外)和.net(在我的工作中)有角度和我前来的结论,一段时间后,它更容易在框内工作,意思是,(恕我直言)放弃聪明,放弃php模板并使用angular作为你的客户端,并使用php作为你的服务器端。它并不是说你不能拥有index.php,但是,你可以使用partials(php或html)。您将找到一个更简单的结构,您可以使用html,js(在教程中查看tutorial routing and multiple views)。你应该意识到当你使用partials时你需要注意一些事情(特别是在使用#和html5mode时)。
然而,你没有征求我的意见 - 我可能会因此而感到厌恶...回答你的问题。我认为如果想要保留你拥有的结构,那么你应该将控制器放在模板中,并附加到容器中。
希望这有帮助
- 丹