刷新AngularJS ng-view

时间:2014-06-02 18:43:00

标签: javascript php angularjs

我有一个应用程序,它作为前端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();
            }
        });
    }
});

1 个答案:

答案 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) {

}]);