Angularjs - 在不更改URL的情况下更改模板

时间:2014-09-11 11:01:52

标签: javascript angularjs templates url

Angular和JS的新手,所以我的行话可能会关闭。

在页面的某个部分中,我希望根据用户点击 更改网址路径,加载不同的模板。我知道如何将$ routeProvider与ng-view一起使用,但需要更改URL以加载相关模板。

我还想在此特定部分中添加一个反向链接,以便用户可以返回一个步骤。

有什么想法吗?我找不到任何类似于我的问题,但我可能会用不正确的术语进行搜索。非常感谢任何帮助或建议。

此致

2 个答案:

答案 0 :(得分:3)

对于后退按钮,您必须使用过去的点击/链接保留历史数组,并在单击并单击返回时从中弹出。 "完成"解决方案看起来类似于:

的index.html

<html ng-app="app">
...
<div ng-controller="myController">

  <button ng-click="setCurrentView('tem1')">Template 1</button>
  <button ng-click="setCurrentView('tem2')">Template 2</button>
  <button ng-click="setCurrentView('tem3')">Template 3</button>

  <div ng-include="tem1.html" ng-show="currentView==tem1"></div>
  <div ng-include="tem2.html" ng-show="currentView==tem2"></div>
  <div ng-include="tem3.html" ng-show="currentView==tem3"></div>

  <button ng-click="goBack()">Back</button>

</div>
...
</html>

app.js

angular.module('app',[]).controller('myController',['$scope',function($scope){
  $scope.currentView='tem1';
  var history=[];

  $scope.setCurrentView=function(view){
    history.push($scope.currentView);        
    $scope.currentView=view;
  }

  $scope.goBack=function(){
    $scope.currentView=history.pop();
  }
}]);

答案 1 :(得分:0)

我建议使用ng-include。这允许您从其他位置包含html代码块。然后,您可以使用ng-show / hide显示所需的片段或ng - 如果您希望在不需要时将其排除在dom之外