4

我有一个 AngularJS 应用程序,其中包含使用 Smarty 构建的页面。页面顶部有ng-aggtag参数,正在编译基本的AngularJS模板,.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时,我构建了我的角度页面模板,并触发了我的方法中的console.log()myapp.run(),但教程控制器没有运行。

我该如何调试这个。我猜是 routeProvider 出了问题,有没有办法检查正在使用哪个控制器(如果有)。

我的 javascript 控制台中没有出现任何错误。

这是在 Chrome 中运行的,来自 Mac 上的本地开发 Ubuntu 虚拟机。

4

1 回答 1

3

我认为您可能需要重新考虑如何构建您的项目。我尝试了类似您的方法,但对我来说似乎不正确(并且无法使其正常工作)。

我正在使用 php(在我的工作之外)和 .net(在我的工作中)有角度,我得出的结论是,在盒子内工作要容易得多,意思是,(恕我直言)放弃聪明,放弃 php 模板,使用 angular 作为客户端,使用 php 作为服务器端。这并不是说您不能拥有 index.php,但是,您可以使用 partials(php 或 html)。您会发现一个更简单的结构,其中包含 html、js(查看教程路由和教程中的多个视图)。您应该意识到在使用 partials 时需要注意一些事情(尤其是在使用 # 和 html5mode 时)。

但是,您没有征求我的意见-我可能会为此感到沮丧...回答您的问题。我认为,如果要保留您拥有的结构,那么您应该将控制器放在附加到容器的模板中。

希望这可以帮助

- 担

于 2012-10-29T16:46:56.883 回答