Javascript对象布尔字段神奇地更改了值

时间:2018-09-04 14:48:16

标签: javascript angular angularjs-directive angular-ui

我偶然发现了Javascript对象的一种奇怪行为。布尔字段似乎总是获得“ true”值,并且永远无法更改。

我正在准备带有消息弹出窗口的简单分页指令。

<ul class="pagination">
  <li ng-repeat="button in buttons" ng-class="{active: button.isCurrent}">
    <a ng-click="button.click()" popover-template="'popover.html'" popover-placement="bottom" popover-is-open="button.showPageSelector" href="#">{{page.text}}</a>
  </li>
</ul>

当我收到服务器的响应时,我使用.js中的以下脚本创建按钮:

// visiblePages is an array of Numbers
function buildPagination(scope, visiblePages) {
  scope.buttons = visiblePages.map(function (number) {
    return {
      text: number.toString(),
      isCurrent: number === scope.currentPage,
      showPageSelector: false,
      click: function () {
        if (this.isCurrent) {
          this.showPageSelector = !(this.showPageSelector);
        }
      }
    };
  });
}

如您所见,弹出窗口的可见性由按钮对象的showPageSelector字段控制。现在,我只想显示工具提示(如果单击了当前页面),但是它没有显示。我打开调试器并在click函数上设置断点。 showPageSelector似乎设置为true。问题是showPageSelector仅用在这3行中,我希望它是false。每次单击分页时,都会得到相同的结果-分配不会更改该值。

那是为什么?是Java中的Angular错误还是问题? Firefox 61.0.2和Chrome 67.0.3396.99均存在问题,因此我认为浏览器不是问题

0 个答案:

没有答案