【发布时间】:2015-08-23 02:32:43
【问题描述】:
我有一个网页,它有不同的documents.php,每个文档都有它的ng-app 和一些控制器。 (我的网页类似于 Spotify)。
player.php:(用户可以使用音频播放器播放音乐)
<div class="navbar-fixed" ng-controller="menuController as menu2">
<?php include('includes/menu.php'); ?>
</div>
<div ng-controller="InteractiveController as interactCtrl">
//some code
</div>
panel_admin.php:(用户可以修改自己的数据和网页的部分数据)
<div class="navbar-fixed" ng-controller="menuController as menu2">
<?php include('includes/menu.php'); ?>
</div>
<div ng-controller="AdminController as AdminCtrl">
//some code
</div>
player.php 和 panel_admin.php 有各自的 player.js 和 panel_admin.js 及其 .controllers。
player.js:
var decibelsInteractive = angular.module("decibels-interactive", []);
decibelsInteractive.controller('InteractiveController', function ($scope, $log) {
panel_admin.js:
var adminControl = angular.module("decibels-admin", []);
adminControl.controller("AdminController", function($scope){
现在,我在 menu.php 中有菜单栏,我在 player.php 和 panel_admin.php 文档中使用。我导入它是因为我不想在需要使用菜单的每个页面中重复代码(menu.php 具有管理用户选项、注销和许多其他选项等选项......)。我还创建了一个 menu.js,只在一个文档中包含特定方法,而不是在 25 个文档中。
menu.php:(菜单是一个菜单栏,用户有一些选项,它也有它的用户名和注销选项)
//this document only contains some html code
现在,我尝试实现一个简单的代码(在 menu.js 中),它允许我在有多个 ng-app 时共享一个控制器。
Question with the code I've taken
menu.js:
angular.module('decibels-interactive', ['shared']); //player2.php
angular.module('decibels-admin', ['shared']); //panel_admin.php
var sharedModule=angular.module('shared',[]);
sharedModule.controller('menuController',['$scope',function($scope) {
alert("menuController");
}]);
});
这成功了!!!但是,角度显示错误...(正在加载 player.php)
当我加载 panel_admin 时,同样的错误再次出现,但使用 AdminController...
似乎angular只检测到每个.php中的第一个控制器,而找不到第二个。
我做错了什么?
谢谢!
【问题讨论】:
-
仅供参考,混合 PHP 和 AngularJS 可能不是最好的。现在可能为时已晚,但请查看以下答案:stackoverflow.com/a/15625754/2506594
-
@DevinH。是的,我知道如果我只做-angularJS,会更容易,但我没有太多时间来更改我所有的网页!无论如何,谢谢!
标签: javascript angularjs