Javascript 无法在ng reapeat中设置AngularJS变量

Javascript 无法在ng reapeat中设置AngularJS变量,javascript,angularjs,Javascript,Angularjs,我想实现的列表应该是完全可见的,只有在点击。 但当我尝试在ng click上设置值时,值范围仅在on clicked元素中 <ul data-ng-init="showIataList = false"> {{showIataList}} <-- always false :( but should be true after click on link from list <li data-ng-repeat="value in data.departureIa

我想实现的列表应该是完全可见的,只有在点击。 但当我尝试在
ng click
上设置值时,值范围仅在on clicked元素中

<ul data-ng-init="showIataList = false">
  {{showIataList}} <-- always false :( but should be true after click on link from list
  <li data-ng-repeat="value in data.departureIataList">
    <a href="javascript:"
       data-ng-if="$index < 3 || showIataList">
       {{value}}
    </a>
    {{showIataList}}
    <a href="javascript:"
       data-ng-if="!showIataList && $index == 3"
       data-ng-click="showIataList = true">
        {{showIataList}} <-- after click is true, but true should be and on the top showIataList variable
    </a>
  </li>
</ul>

    {{showitalist}FYI,每个
    ng repeat
    项目都有自己的范围。这就是为什么
    data ng click=“showitalist=true”
    适用于特定范围而不是主
    $scope
    的原因

    例如,您可以编写:

    $scope.data.showIataList = false;
    
    一切都会好起来的


    或者在您的情况下:


    供参考,每个
    ng repeat
    项目都有自己的范围。这就是为什么
    data ng click=“showitalist=true”
    适用于特定范围而不是主
    $scope
    的原因

    例如,您可以编写:

    $scope.data.showIataList = false;
    
    一切都会好起来的


    或者在您的情况下:


    问题在于此标签。它内部有ng if,因此它创建一个新范围并从父范围继承数据

    <a href="javascript:"
       data-ng-if="!showIataList && $index == 3"
       data-ng-click="showIataList = true">
    
    但单击链接后,
    ngIf.showitalist
    会发生更改,但该更改不会传播到
    parentScope.showitalist
    (因为
    showitalist
    是(原始值)

    这就是为什么您在
    ngIf
    中看到,
    showitalist
    是正确的,但在
    parentScope
    中它仍然是错误的

    您可以通过将showitalist移动到这样的对象中来修复它

    <ul data-ng-init="iataList = {isShow:false}">
      {{iataList.isShow}} 
      <li data-ng-repeat="value in data.departureIataList">
        <a href="javascript:"
           data-ng-if="$index < 3 || iataList.isShow">
           {{value}}
        </a>
        {{showIataList}}
        <a href="javascript:"
           data-ng-if="!iataList.isShow&& $index == 3"
           data-ng-click="iataList.isShow= true">
            {{iataList.isShow}} 
        </a>
      </li>
    </ul>
    
      {{iataList.isShow}}
    • {{showitalist}}

    问题在于此标记。它的内部有ng,因此它创建一个新范围并从父范围继承数据

    <a href="javascript:"
       data-ng-if="!showIataList && $index == 3"
       data-ng-click="showIataList = true">
    
    但单击链接后,
    ngIf.showitalist
    会发生更改,但该更改不会传播到
    parentScope.showitalist
    (因为
    showitalist
    是(原始值)

    这就是为什么您在
    ngIf
    中看到,
    showitalist
    是正确的,但在
    parentScope
    中它仍然是错误的

    您可以通过将showitalist移动到这样的对象中来修复它

    <ul data-ng-init="iataList = {isShow:false}">
      {{iataList.isShow}} 
      <li data-ng-repeat="value in data.departureIataList">
        <a href="javascript:"
           data-ng-if="$index < 3 || iataList.isShow">
           {{value}}
        </a>
        {{showIataList}}
        <a href="javascript:"
           data-ng-if="!iataList.isShow&& $index == 3"
           data-ng-click="iataList.isShow= true">
            {{iataList.isShow}} 
        </a>
      </li>
    </ul>
    
      {{iataList.isShow}}
    • {{showitalist}}