Angular JS ng-include 绑定问题

2023-12-21

我使用模板文件创建了一个寻呼机小部件,我在 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 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>

每个 Angular 文档了解范围 https://github.com/angular/angular.js/wiki/Understanding-Scopes,当您尝试将 2 路数据绑定(即表单元素、ng-model)到原语时,范围继承将无法按您的预期工作。通过遵循“最佳实践”,可以轻松避免原语的这个问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular JS ng-include 绑定问题 的相关文章

  • angularjs ng-options从嵌套的json数组中选择

    我在我的范围内定义了一个 json scope People firstName John lastName Doe Choices Name Dinner Options Name Fish ID 1
  • 在 Angular JS 中撤消重做

    我有一个大对象排列在 rootScope 中 比如说 gt 100 个对象 每个对象又具有对象 数组的层次结构 我想使用 deepWatching watch 整个 rootScope 即将 watch 的第三个参数设置为 TRUE 但这里
  • 平静的 POST 响应的“最佳”实践

    所以这里没有什么新内容 我只是想得到一些澄清 似乎在其他帖子中找不到任何澄清 我正在平静地创建一个新资源 说 books POST 与身体 title The Lion the Witch and the Wardrobe author C
  • ng-repeat 和 ng-controller 在同一个 DOM 元素上

    我们可以将 ng controller 和 ng repeat 附加到同一个 DOM 元素吗 Fiddle http jsfiddle net ZXE4c 4 这是 HTML table tbody tr td user name td t
  • Angular - UI 路由器 - 状态重入

    如何配置 UI Router 默认重新进入或重新加载状态 例如 用户想要刷新页面 因此他单击该页面后面的链接 但目前该链接不可点击 因为它会转到同一页面并且状态不会改变 使用浏览器按钮刷新确实有效 因此它会再次重新加载整个 SPA 这是不可
  • Angular 计算 HTML 中的百分比

    我试图在 HTML 中显示百分比值 如下所示 td myvalue totalvalue 100 td 它可以工作 但有时它会给出一个很长的小数 这看起来很奇怪 如何四舍五入到小数点后两位 有更好的方法吗 您可以使用过滤器 如下所示杰夫约翰
  • 如何从角度资源 $save() 读取响应并保留原始数据

    我是 Angular 的新手 我确信我在这里缺少一些基本的东西 我有一个对象 我将其发布到服务器来创建它 服务器返回对象 ID 我需要读取并更新客户端中的对象 服务器只会返回对象 ID 但是 在客户端 我有其他数据 当我执行回调时我无法使用
  • $httpBackend .whenGet 不是 Angular 中的函数

    我正在尝试创建一个虚拟服务来获取 Angular 中的数据 我正在使用 ngMockE2E 我的 Mock 代码如下所示 function use strict var app angular module productResourceM
  • 在我的输入中显示多个信息

    我有一个输入 div class search field search field date search field calendar ui datepicker calendar columns small 3 div
  • 关闭特定url上的AngularJS窗口

    我是 angularjs 的新手 所以这个问题对于经验者来说可能看起来很愚蠢 但我真的无法执行此操作 任何人都可以告诉我如何在到达特定网址后从 webview 返回到应用程序 就像我正在打开一个浏览器中的窗口用于支付过程 所以我需要的是 当
  • 如何在 AngularJS/Bootstrap3 中禁用基于复选框的内容

    我正在创建一个表单 用户可以在其中配置重复事件 因此有大量控件 顶部是一个用于启用 禁用计划的复选框 如何禁用但不隐藏基于复选框的整个部分 如果选中 用户应该能够对时间表进行修改 如果没有检查 则不允许进行任何更改 我相当确定我可以在每个控
  • 如何在单元测试中的请求之间更改 $httpBackend when[method] 语句?

    在我的测试中 我启动一些模型数据并模拟响应 beforeEach function var re new RegExp http users online httpBackend whenGET re respond id 12345 us
  • 如何将函数处理程序从控制器传递到 AngularJs 中的指令隔离范围?

    我在控制器中有以下功能 angular module app controller BodyController function this click function message alert message 我想将此函数传递到指令的
  • AngularJS 中的重定向状态

    这是状态配置 angular module grabhutApp config function stateProvider urlRouterProvider stateProvider ACCOUNT state account abs
  • Angular JS未知提供者错误

    删除 Bower components 并清理缓存后 我使用 Bower install 重新安装了依赖项 该应用程序无法加载并出现以下错误 未捕获的错误 injector unpr 未知提供程序 forceReflowProvider 这
  • 使用 ui-router 的 angular.js,如何仅重新加载一个视图?

    我有一个相当简单的待办事项应用程序 使用 angular js 我正在使用 ui router 库 我查看了 github 上的 ui router 示例 https github com angular ui ui router tree
  • Protractor addMockModule 附加参数不起作用?

    这看起来非常非常简单 但我不明白为什么这个简单的代码不起作用 我正在添加一个模拟模块来在 Angular E2E 测试中模拟我的 API 后端 我正在使用量角器 1 6 0 我需要将附加参数传递给模拟模块 根据 Protractor 文档
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • ui-sref 和变量状态参数名称

    我想呈现一个链接 例如 a 其中州名myState和钥匙myKey是变量 有办法做到这一点吗 我发现自己处于同样的情况 我也无法完成这一点 尝试使用 ng click 移动代码 并在 ng click 函数内部使用 stage go htt
  • AngularJS templateUrl 与 template - 隔离范围

    我有以下指令 offerListSorters directive offersSorter myState templateCache function myState templateCache return scope control

随机推荐