gpt4 book ai didi

javascript - 在 ng-view 页面中创建 Controller

转载 作者:行者123 更新时间:2023-11-28 01:19:48 26 4
gpt4 key购买 nike

我想管理特定于 ng-view 页面的 Controller ,因此我将 Controller 放在 ng-view 页面中并仅使用特定于该页面的 Controller 。但是,代码没有显示它应该从该 Controller 显示的内容。

这是我的案例。我将代码分成 3 个文件,分别是“mainfile.php”、“page1file.php”和“page2file.php”。 “mainfile.php”包含路由到第 1 页和第 2 页的主页。为了比较结果,我为这 2 个页面创建了不同的条件。 “page1file.php”使用在“mainfile.php”中定义的 Controller ,而“page2file.php”使用在页面本身中定义的 Controller 。

在这种情况下,“page1file.php”成功显示了我想要的内容,但是“page2file.php”没有显示它应该显示的内容。请帮助我并给出一个非常简单的解释和一个简单的解决方案,因为我是 angularjs 的新手。

这是我的代码。您可以复制它们并在您的 PHP 服务器上运行它。

主文件.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>

最佳答案

我认为您不能在 View 模板中内联脚本模块。看看你的应用程序的这个工作版本,我会组织它的方式:

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 动态呈现您的 Controller ,请参阅此 SO 问题的答案:Angularjs: server side (php) rendering and data binding client side after an event

您可能也对这篇关于在应用程序启动后加载 Angular 组件的文章感兴趣:http://www.bennadel.com/blog/2553-loading-angularjs-components-after-your-application-has-been-bootstrapped.htm

TL;DR:您需要在配置阶段存储对 $controllerProvider 的引用,然后调用 $controllerProvider.register('MyController', MyController)在你的内联脚本中。虽然我不确定我对此有何感想...

关于javascript - 在 ng-view 页面中创建 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com