我有一个应用程序,它作为前端MVC运行角度,但后端代码并非完全针对它设计。我有一个页面列出了可以使用搜索选项过滤的内容。所有搜索功能都有效,因为如果我点击搜索,手动重新加载页面,则会返回我期望的数据。我的问题是如何让ng-view重新加载作为"模板"的php文件。我知道这对单页应用程序来说不是最好的做法,所以请多好。我的控制器在搜索表单的ng-submit上有没有办法说,"嘿,ng-view,重新加载你的模板。"这似乎是一件相对微不足道的事情,但文档却没什么帮助。
忘了提到我尝试使用$ route.reload(),但只是重新加载了在添加搜索参数之前出现的页面。我可以使用$ window.location.reload(),但这会破坏单页应用程序的目的。
我运行一个ajax函数来更新会话中的搜索变量,(这是一种愚蠢的搜索方式,但是所有者写了它,我不会踩到他的脚趾告诉他这是错的)。此时,如果您通过F5重新加载页面,它会加载预期的数据,但是当我运行$ route.reload()时,它不会再次运行php并获得更新的结果,它会将视图重新加载为如果php永远不会改变。
agencyMatrix.controller('singlePage', function($scope, $route){
$scope.reset = function(targetUrl){
$.ajax({
type: "GET",
url: targetUrl,
success: function() {
$route.reload();
}
});
}
});
答案 0 :(得分:0)
我在php后端使用了角度。
在我的设计中,对于每个视图页面,都有view.php。在这个php文件中,有用于页面的json数据和用于页面设置的变量,如模板html页面的目录。
我的view.php文件:
<?php $appName = "flySearhPageApp"; ?>
<?php define("PAGE_NAME",$pageName )?>
<?php
<div ng-view></div>
<script type="text/javascript">
var APP_PAGE_NAME = "memberActivateStatu";
var response = {};
response.memberdata = JSON.parse('<?php echo json_encode(isset($memberInfo) ? $memberInfo : ""); ?>');
response.errorCode = '<?php echo (isset($errorCode) ? $errorCode :""); ?>';
response.errorDesc = '<?php echo (isset($errorDesc) ? $errorDesc :""); ?>';
</script>
?>
和footer.php
<script src="<?php echo base_url();?>online_reservation_public/app/js/<?php echo PAGE_NAME; ?>/app.js"></script>
<script src="<?php echo base_url();?>online_reservation_public/app/js/<?php echo PAGE_NAME; ?>/controllers.js"></script>
和我的app.js
angular.module(APP_NAME, [
'ngRoute',
APP_NAME+'.filters',
APP_NAME+'.services',
APP_NAME+'.directives',
APP_NAME+'.commonControllers',
APP_NAME+'.controllers'
]).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/',{templateUrl:BASE_URL+PUBLIC_DIRECTORY+"/partials/"+APP_PAGE_NAME+'/index.html',controller:APP_NAME+'Controller'});
}]).config(['$locationProvider', function ($locationProvider) {
}]);