AngularJS控制器未加载

时间:2012-10-29 06:47:43

标签: javascript module controller smarty angularjs

我有一个使用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虚拟机。

1 个答案:

答案 0 :(得分:3)

我认为您可能想重新考虑如何构建项目。我试过像你这样的东西,这对我来说似乎并不合适(并且无法使其正常工作)。

我正在使用php(在我的工作之外)和.net(在我的工作中)有角度和我前来的结论,一段时间后,它更容易在框内工作,意思是,(恕我直言)放弃聪明,放弃php模板并使用angular作为你的客户端,并使用php作为你的服务器端。它并不是说你不能拥有index.php,但是,你可以使用partials(php或html)。您将找到一个更简单的结构,您可以使用html,js(在教程中查看tutorial routing and multiple views)。你应该意识到当你使用partials时你需要注意一些事情(特别是在使用#和html5mode时)。

然而,你没有征求我的意见 - 我可能会因此而感到厌恶...回答你的问题。我认为如果想要保留你拥有的结构,那么你应该将控制器放在模板中,并附加到容器中。

希望这有帮助

- 丹