我有一个带有使用 Smarty 构建的页面的 AngularJS 应用程序。页面顶部有ng-agg
标签参数,正在编译基本的AngualarJS模板,正在运行我的模块的.run
方法,但没有调用我的 Controller
开始的 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'})
})
教程 Controller
var MyappTutorial = function ($scope, $location) {
console.log('tutorial');
}
当我访问页面 index.php?page=tutorial 时,我构建了我的 angular 页面模板并触发了
myapp.run()
方法中的 console.log() ,但教程 Controller 没有运行。我该如何调试这个。我猜这是 routeProvider 出错了,有没有办法检查正在使用哪个 Controller (如果有)。
我的 javascript 控制台没有出现任何错误。
这是在 Chrome 中运行,从本地开发 Ubuntu 虚拟机,在 Mac 上。
最佳答案
我认为您可能需要重新考虑如何构建您的项目。我尝试了像您这样的方法,但对我来说似乎不正确(并且无法使其正常工作)。
我正在使用带有 angular 的 php(在我的工作之外)和 .net(在我的工作中),不久前我得出的结论是,它在框内工作要容易得多,这意味着(恕我直言)放弃聪明, 放弃 php 模板并使用 angular 作为您的客户端并使用 php 作为您的服务器端。这并不是说您不能拥有 index.php,但是,您可以使用部分文件(php 或 html)。您会发现一个更简单的结构,其中包含 html、js(在教程中查看 tutorial routing and multiple views)。您应该意识到在使用部分时需要注意一些事项(特别是在使用 # 和 html5mode 时)。
然而,你没有征求我的意见——我可能会因此受到指责......回答你的问题。我认为,如果要保留您拥有的结构,那么您应该将 Controller 放在连接到容器的模板中。
希望这可以帮助
- 担
关于javascript - AngularJS Controller 未加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13117046/