2012-10-29 60 views
4

我有一个AngularJS应用程序,使用Smarty构建页面。页面的顶部有ng-agg标签参数和基本AngualarJS模板被编译,并且我对我模块的.run方法是运行的,但是我的控制器不被称为AngularJS控制器未加载

启动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?页=教程我我的角度页面模板是建立在我myapp.run()方法的console.log()被触发,但教程控制器没有按不会跑。

我该如何去调试这个。我猜这是routeProvider出错了,是否有一种方法可以检查使用哪个控制器(如果有的话)。

我没有收到我的JavaScript控制台中的任何错误。

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

+1

我已经成功加入'NG-控制器= MyappTutorial'式标签每个页面来解决这个问题,但我认为路线提供商让我避免这样做 –

+0

添加ng控制器='...'修复了我的问题 – xst

回答

3

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

我正在使用php(在我的工作之外)和.net(在我的工作上),并且我回到了一段时间的结论,那就是它更容易在框内工作,意思是恕我直言)放弃聪明,放弃PHP模板和使用角作为您的客户端和使用PHP为您的服务器端。它不是说你不能有一个index.php,但是,你可以使用partials(php或html)。你会发现一个更简单的结构,你有html,js(在教程中查看tutorial routing and multiple views)。你应该认识到,当你使用partials的时候你需要注意的东西(特别是在使用#和html5mode时)。

但是,您并没有要求我的意见 - 我可能会为此付出代价...回答您的问题。我认为如果你想保留你有的结构,那么你应该把你的模板中的控制器连接到一个容器上。

希望这有助于

--Dan

+0

我想知道如何开始Smarty,但它对于使用可重复组件(如页眉和页脚)构建页面非常有用。 –

+0

我仍然很聪明,但我使用bash脚本来构建静态HTML页面,现在一切都变得更加简单。感谢丹的指导 –