加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular JS ng-include绑定问题

发布时间:2020-12-17 17:58:05 所属栏目:安全 来源:网络整理
导读:我使用模板文件创建了一个寻呼机小部件,我在 HTML页面中使用了两次.我有一个选择转到页面选项以及上一页和下一页的链接. 问题是当我使用选择框更新当前页面时更新,然后我使用上一页和下一页链接,当前页面会更新,但选择框不会更新. 请告诉我我做错了什么.我的
我使用模板文件创建了一个寻呼机小部件,我在 HTML页面中使用了两次.我有一个选择转到页面选项以及上一页和下一页的链接.

问题是当我使用选择框更新当前页面时更新,然后我使用上一页和下一页链接,当前页面会更新,但选择框不会更新.

请告诉我我做错了什么.我的构建这样的寻呼机小部件的方法有什么逻辑错误吗?

控制器代码:

var gallery = angular.module('gallery',[]);
    gallery.controller('ItemListCtrl',['$scope',function($scope){
      /*  Pagination Code */
    $scope.currentPage = 1;
    $scope.itemsPerPage = 24;
    $scope.total = 100;
    $scope.range = function(min,max,step){
      step = step || 1;
      var input = [];
      for (var i = min; i <= max; i += step) input.push(i);
      return input;
    };
    $scope.prevPage = function (){
      if($scope.currentPage > 1){
        $scope.currentPage--;
      }
    };
    $scope.nextPage = function (){
      if($scope.currentPage < $scope.pageCount()){
        $scope.currentPage++;
      }
    };
    $scope.pageCount = function (){
      return Math.ceil($scope.total / $scope.itemsPerPage);
    };
    $scope.setPage = function (n){
      if(n >= 0 && n <= $scope.pageCount()){
        $scope.currentPage = parseInt(n,10);
      }
    };
  }]);

这是用于复制问题的plnkr URL.

http://plnkr.co/edit/9LUJnVzWAS9BauyORQn5?p=preview

解决方法

根本原因是ng-include将为目标元素创建一个单独的范围,因此快速修复代码是为所有范围对象添加$parent前缀.

<fieldset class="pager">
<div>Page {{$parent.currentPage}} of {{$parent.pageCount()}}</div>
<div>
<div>
<label>Go to page</label>
<select ng-model='$parent.currentPage' ng-change="$parent.setPage($parent.currentPage)">
<option ng-repeat="n in range(1,$parent.pageCount())" value="{{n}}" ng-selected="n === $parent.currentPage">{{n}}</option>
</select>
</div>
<div>
<a href ng-click="$parent.prevPage()">Previous Page</a>
&nbsp;|&nbsp; 
<a href ng-click="$parent.nextPage()">Next Page</a>
</div>
</div>
</fieldset>

在Per Angular文档Understanding Scopes中,当您尝试对基元进行双向数据绑定(即表单元素,ng-模型)时,范围继承将无法正常工作.通过遵循始终拥有‘.’ in your ng-models的“最佳实践”,可以轻松避免与原语的这个问题

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读