【发布时间】:2017-10-01 13:21:48
【问题描述】:
我有一个嵌套在另一个控制器中的控制器。
<div ng-controller="manufacturerController" ng-cloak>
<div ng-controller="contractController" ng-cloak>
<div data-ng-if="item" class="panel panel-default">
<div class="panel-heading text-center">
<span class="h3">Contract</span>
</div>
</div>
</div>
<button data-ng-if="item && !ajaxOut" class="btn btn-success" data-ng-click="saveItem()">Save</button>
</div>
saveItem() 通过按钮调用,代码在manufacturerController中:
$scope.saveItem = function () {
$scope.ajaxOut = true;
$scope.saveContracts();
};
但是函数 saveContracts() 在 contractController 中。我想从manufacturerController.saveItem()调用contractController.saveContracts()。
根据这里我应该可以很好地调用父方法:How to call a function from another controller in angularjs?
但是保存会冻结浏览器。我做错了什么,我该如何解决?
【问题讨论】:
-
你不直接这样做。您可以通过事件/通知来完成。控制器不应该相互了解。您可以使用内置的 $broadcast,也可以设置一个简单的观察者通知服务。
-
@TimConsolazio 你能举个例子吗?
-
查找“$on $emit $broadcast angularjs”。那里有很多例子。
标签: angularjs angularjs-controller