在ng视图页面中创建控制器
create controller in ng-view page
我想管理特定于ng视图页面的控制器,因此我将控制器放在ng视图页面中,并仅使用特定于该页面的控制器。但是,该代码并没有显示该控制器应该显示的内容。
这是我的案子。我把我的代码分成3个文件,分别是"mainfile.php"、"page1file.php"answers"page2file.php"。"mainfilephp"包含路由到第1页和第2页的主页。为了比较结果,我为这两页创建了不同的条件。"page1file.php"使用在"mainfile.php"中定义的控制器,而"page2file.php"使用在页面本身定义的控制器。
在这种情况下,"page1file.php"成功地显示了我想要的内容,但"page2file.php"没有显示它应该显示的内容。请帮助我,给我一个非常简单的解释和一个简单的解决方案,因为我是angularjs的新手。
这是我的密码。您只需复制它们并在php服务器上运行即可。
mainfile.php:
<!DOCTYPE html>
<html>
<head>
<title>learn angular routing</title>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.min.js"></script>
<script type="text/javascript">
function routeReload($scope) {
$scope.routeReloading = function(){
window.location.reload();
};
}
routeReload.$inject = ['$scope'];
function routeConfig($routeProvider) {
$routeProvider
.when('/one',{
templateUrl:'page1file.php'
})
.when('/two',{
templateUrl:'page2file.php'
})
;
}
routeConfig.$inject=['$routeProvider'];
function testOne($scope) {
$scope.name = "page one";
}
testOne.$inject = ['$scope'];
var testNgView = angular.module('testNgView',['ngRoute']);
testNgView.config(routeConfig);
testNgView.controller('routeReload',routeReload);
testNgView.controller('testOne',testOne);
</script>
</head>
<body>
<div ng-app="testNgView">
<div ng-controller="routeReload">
View page <a ng-click="routeReloading();" href="#one">one</a> or
<a ng-click="routeReloading();" href="#two">two</a>
<div ng-view></div>
</div>
</div>
</body>
</html>
page1file.php:
<div ng-controller="testOne">
This is {{name}}
</div>
page2file.php:
<script type="text/javascript">
function testTwo($scope) {
$scope.name = "page two";
}
testTwo.$inject = ['$scope'];
testNgView.controller('testTwo',testTwo);
</script>
<div ng-controller="testTwo">
This is {{name}}
</div>
我认为您无法在视图模板中内联脚本模块。看看这个工作版本的应用程序,我会组织它的方式:
http://plnkr.co/edit/nSsagK1Y04akNJyMToah?p=preview
您可以使用.php
文件来代替.html
文件,这应该没有什么区别。
所以你的主文件应该是这样的:
<!DOCTYPE html>
<html>
<head>
<title>learn angular routing</title>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.min.js"></script>
</head>
<body>
<div ng-app="testNgView">
View page <a href="#/one">one</a>
or <a href="#/two">two</a>
<ng-view></ng-view>
</div>
<script src="app.module.js"></script>
<script src="app.routes.js"></script>
<script src="views/page1/controller.js"></script>
<script src="views/page2/controller.js"></script>
</body>
</html>
如果您的目标是使用PHP动态渲染控制器,请参阅这个SO问题的答案:Angularjs:事件后的服务器端(PHP)渲染和数据绑定客户端
您可能还对这篇关于在应用程序启动后加载Angular组件的文章感兴趣:http://www.bennadel.com/blog/2553-loading-angularjs-components-after-your-application-has-been-bootstrapped.htm
TL;DR:您需要在配置阶段存储对$controllerProvider
的引用,然后在内联脚本中调用$controllerProvider.register('MyController', MyController)
。我不知道我对此有何感受。。。
- 在控制器中创建StandardListItem并在赢得的项目上按下事件'不要开火
- 阻止控制器创建新的作用域对象
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 如何将从jQuery创建的数组传递给控制器方法
- 如何从控制器创建进度条来处理MVC3中的长流程
- 角度指令和属性Don'在控制器内创建和设置时无法工作
- 使用双向绑定将对象从角度视图动态添加/创建到控制器的数组
- 每次使用角度控制器都会创建一个新的if实例
- 使用angular.module创建控制器有什么好处(如果有的话)
- 如何创建可以使用 AngularJS 上的控制器访问的帮助程序类
- 创建通用控制器功能
- 茉莉花+业力+角度测试创建控制器
- $resolve在创建控制器之前不会添加到$scope
- 如何在 Ember.ContainerView 中为 View 创建控制器
- 推迟在应用程序运行angularjs上创建控制器/服务
- 在ng视图页面中创建控制器
- 使用angular.js在单独的文件夹中创建控制器文件
- AngularJS-创建控制器之间的区别
- Angular 是否有创建控制器时的事件
- AngularJS——创建控制器和服务的不同方式,为什么?