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の両方が異なるスコープを作成します。Chrome用の素晴らしいAngularJSBatarang開発者ツールを使用して、さまざまなスコープの動作を確認できます。

コード内で同じ値を参照するために行うことができる1つの変更は、次のようなプリミティブ型の代わりにオブジェクトプロパティを参照することです。

$scope.value = { val: 5 };

にバインドします:

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

さまざまなスコープでこれを処理するためのより良い方法があるかどうかを確認したいと思います。

于 2012-08-08T21:10:50.847 に答える