javascript - 如何根据变量更改 ng-view

标签 javascript jquery html angularjs

我正在使用 Angular 构建一个网站,该网站显示文件夹 images 中的图像。这些图像的标题为 image1、image2 等。该站点在 View 中显示图像,一次一张图像。

页面首先显示第一张图片。要查看下一张图片,用户单击下一步。要查看上一张图片,用户点击上一张。要查看第一张图片,用户点击第一张

到目前为止,我只能让网站显示第一张图片,但我不知道如何获取下一张图片。

My Index.html(主页面):

    <script src="../Scripts/angular.min.js"></script>
    <script src="../Scripts/angular-route.js"></script>
    <script src="../modules/myModule.js"></script>
    <script src="../Controllers/myController.js"></script>
    <script src="../Scripts/MyScript.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl"> 
    <ul>
        <li><a href="#next">Next</a></li>
        <li><a href="#first">First</a></li>
        <li><a href="#previous">Previous</a></li>
    </ul>
    <div id="images" class="ng-view">
    </div>
</body>
</html> 

我的部分 View 名为 myView:

<div>
    <img src="../images/image1.jpg" />
</div>

我的 Controller ,叫做myController:

app.controller("myCtrl", function ($scope) {

});

我的模块,称为 myModule:

var app = angular.module("myApp", ["ngRoute"]);

我的脚本,名为 myScript:

app.config(function ($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl: "image1.html"
    })
    .when("/next", {
        templateUrl: "image1.html"
    })
    .when("/first", {
        templateUrl: "image1.html"
    })
    .when("/previous", {
        templateUrl: "image1.html"
    });
});

我需要更改当前图像减一或加一的下一个时间和上一个时间。 第一次尝试:

var page = 0;

app.config(function ($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl: "image1.html"
    })
    .when("/next", {
        page++;
        templateUrl: "image" + page + ".html"            
    })
    .when("/first", {
        templateUrl: "image1.html"
    })
    .when("/previous", {
        page--;
        templateUrl: "image" + page + ".html"
    });

但在 app.config 中的变量 page 下出现了一条波浪状的红色错误行

第二次尝试:在myController中放入一个变量;

app.controller("myCtrl", function ($scope) {
    $scope.page = 0;
});

但我在 app.config 中仍然看到波浪线。

我该怎么做?

请忘记到达最后一张图像或第一张图像时要做什么的整个算法。我会自己处理的。假装我的逻辑在我第一次尝试时是有道理的。

最佳答案

为什么要为这么简单的任务使用路由?尝试以下操作: 这是 Controller :

 app.controller("myCtrl", function($scope) {
  $scope.page = 1;
  $scope.last = 9999;
  $scope.next = function() {
    if (last < $scope.page) {
      $scope.page= $scope.page + 1;
    } else {
      $scope.page = 1;
    }
  };
  $scope.first = function() {
    $scope.page = 1;
  };
  $scope.prev = function() {
    $scope.page =$scope.page - 1;
  };
});

还有你的 HTML:

<script src="../Scripts/angular.min.js"></script>
    <script src="../Scripts/angular-route.js"></script>
    <script src="../modules/myModule.js"></script>
    <script src="../Controllers/myController.js"></script>
    <script src="../Scripts/MyScript.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl"> 
    <ul>
        <li><button ng-click="next()">Next</button></li>
        <li><button ng-click="first()">First</button></li>
        <li><button ng-click="prev()">Previous</button>/li>
    </ul>
    <img ng-src="'/images/image{{page}}.jpg'"></img> //Thank You MJH
</body>
</html> 

您所做的只是更改反射(reflect)在图像源中的可变页面。希望这能奏效,祝你好运。

编辑:添加点击功能

编辑 2:我发现为什么图像没有显示,我们没有给出整个路径(我忘记了/images/部分)。如果它不更改 img src 中的路径部分,那应该可以解决它。我还将您的 a 元素更改为按钮,以便 ng-click 轻松工作。 ng-click 属性接受一个函数,该函数(例如 x())在范围内定义为 $scope.x=function(){ }。祝你好运!

编辑 3:固定功能和 ng-src

关于javascript - 如何根据变量更改 ng-view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38513302/

相关文章:

java - 使用java WebView的谷歌地图API中的奇怪字符

javascript - 使用 "<select></select>"表单调整 html5 Canvas 的大小

jquery - jqGrid 上的 prettyCheckable 不起作用

javascript - 如何更改 Ionic 2 中 md 和 ws 上的后退按钮颜色?

javascript - IntelliJ IDEA 没有运行基本的 JavaScript hello world

javascript - 索引返回 -1 jquery

javascript - KnockoutJS 复选框列表不绑定(bind)所选值

javascript - $.each 不适用于 jquery 选择器?

javascript - for循环的语法有多严格

javascript - 如何在鼠标悬停时从右向左滑动 td 并在鼠标移出时向后滑动