【问题标题】:$scope value is not updating in model dialog$scope 值未在模型对话框中更新
【发布时间】:2016-01-28 07:22:10
【问题描述】:

我正在使用 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。 但是新的价值并没有出现在对话中。 我需要在哪里更改?

【问题讨论】:

  • 你应该使用引导角度指令并通过范围先生:)
  • 真的必须创建指令来实现吗?
  • 我知道你可以随时使用工厂进行通信或使用 jquery 找到 ctrl 并尝试在那里进行更改。试试这个链接angular-ui.github.io/bootstrap
  • 您的方法肯定会奏效,但我们已经在使用引导库 (getbootstrap.com/javascript),团队不想包含更多库。所以用现有的做一些研发。
  • 从对话框视图中删除 ng-controller="QuickViewController"

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,我正在使用 $rootScope :)
猜你喜欢
  • 2023-03-13
  • 2013-07-05
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 2015-11-23
相关资源
最近更新 更多