7

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

<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>
4

2 回答 2

7

另一种方式 - 您可以使用 $parent 访问父范围。

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

见例子:http: //jsfiddle.net/7Hh2R/

于 2012-08-09T06:07:48.190 回答
5

你是对的ngRepeatngSwitch创建不同的范围。你可以使用很棒的AngularJS Batarang开发者工具来查看不同的作用域。

您可以在代码中引用相同值的一项更改是引用对象属性而不是原始类型,例如:

$scope.value = { val: 5 };

并绑定到:

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

我很想看看是否有更好的方法可以在不同的范围内处理这个问题。

于 2012-08-08T21:10:50.847 回答