代码之家  ›  专栏  ›  技术社区  ›  Chas. Owens

为什么输入不修改ng重复(和ng开关)之外的值?

  •  7
  • Chas. Owens  · 技术社区  · 13 年前

    我假设范围问题是本例中的输入可以修改其旁边的值,但不能修改其他值的原因。如果是这种情况,我如何将模型连接到正确的范围?如果这不是范围问题,我做错了什么?

    <html ng-app>
        <head>
            <script type="text/javascript" src="angular-1.0.1.min.js"></script>
            <script type="text/javascript">
                function ExampleCtrl($scope) {
                    $scope.list = [
                        { name: "a" },
                        { name: "b" },
                    ];
    
                    $scope.value = 5;
                }
            </script>
        </head>
        <body ng-controller="ExampleCtrl">
            <ul ng-repeat="item in list">
                <li>{{ item.name }}
                    <ng-switch on="item.name">
                        <span ng-switch-when="b">
                            <input type="number" ng-model="value" />
                            {{ value }}
                        </span>
                    </ng-switch>
                </li>
            </ul>
    
            value is {{ value }}
        </body>
    </html>
    
    2 回复  |  直到 13 年前
        1
  •  7
  •   Artem Andreev    13 年前

    另一种方法-您可以使用$parent访问父作用域。

    <input type="number" ng-model="$parent.$parent.value" />
    

    参见示例: http://jsfiddle.net/7Hh2R/

        2
  •  5
  •   Gloopy    13 年前

    你们都是对的 ngRepeat ngSwitch 创建不同的作用域。你可以使用真棒 AngularJS Batarang Chrome的开发人员工具,以查看不同的作用域。

    在代码中引用相同值的一个更改是引用对象属性,而不是基元类型,如:

    $scope.value = { val: 5 };
    

    并绑定到:

    <input type="number" ng-model="value.val"/>
    {{ value.val }}
    

    我很想看看是否有更好的方法来处理不同的作用域。