$ scope值未在模型对话框中更新

时间:2016-01-28 07:22:10

标签: angularjs modal-dialog angularjs-scope angular-controller

我正在使用angularjs并打开bootstrap模型。我想更新我的$ 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。 但新的价值并没有出现在对话中。 我需要在哪里更改?

1 个答案:

答案 0 :(得分:2)

它不会更新,因为您使用的是两个控制器。即使它们具有相同的名称,它们也具有不同的范围。这就是控制器的第一个实例中的函数不会更新第二个中的值的原因。它们是不同的实例。

尝试与服务共享您的数据。 您也可以尝试使用$ rootScope或事件,但服务将是最好的方法。

在StackOverflow中检查此解决方案:Share data between AngularJS controllers