0

angularjs を使用し、ブートストラップ モデルを開きます。$scope 変数を更新して、モデルに表示したいと考えています。しかし、新しい価値はモデルに来ていません。私のコードは、

意見、

<li ng-controller="QuickViewController">
               <a href="javascript:void(0)" ng-click="OpenQuickView(value.productId)" data-toggle="modal" data-target="#myModal"></a>

レンダリングダイアログ、

<div>
    @Html.Raw(File.ReadAllText(Server.MapPath("~/Views/Product/QuickView.html")))
</div>

ダイアログビュー、

<div ng-controller="QuickViewController" class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    {{test1}}
    content should come
</div>

私のコントローラー、

function QuickViewController($scope, $http) {
    $scope.test1 = "111";
    $scope.OpenQuickView = function (ProductId) {
        $scope.test1 = "222";
    }
}

app.controller('QuickViewController', QuickViewController);

デフォルトでは $scope.test1 は 111 で、リンクをクリックすると値は 222 になるはずですが、新しい値がダイアログに表示されません。どこを変更する必要がありますか?

4

1 に答える 1

2

2 つのコントローラーを使用しているため、更新されません。同じ名前であっても、スコープが異なります。これが、コントローラーの最初のインスタンスの関数が 2 番目のインスタンスの値を更新しない理由です。それらは異なるインスタンスです。

代わりに、データをサービスと共有してみてください。$rootScope または events でも試すことができますが、サービスが最善の方法です。

StackOverflow でこのソリューションを確認してください: AngularJS コントローラー間でデータを共有する

于 2016-01-28T08:24:27.133 に答える