簡體   English   中英

如何獲取表格的控制器

[英]How to get the controller of a form

說我有幾種形式,每種形式都有自己的控制器,如下所示

 <div ng-controller="MyController1 as ctrl">
    <label>Some label </label>
</div>

<div ng-controller="MyController2 as ctrl">
    <label>Some label </label>
</div>

我有一個全局控制器,該控制器獲取有關表單名稱的信息。 現在,我想找到每種形式的控制器。 例如,如果在我的全局控制器函數中獲得了第一個表單的名稱,那么我如何才能找到其控制器為MyController1? 那有可能嗎?

可以從另一個控制器調用一個控制器。 但是,我相信您要解決的問題還有其他地方:您的應用程序架構。

理想情況下,您的應用應“響應”狀態的變化。 國家應該放在一個單一的地方(也稱為“真理的單一來源”),即。 服務。 然后,您可以根據需要與多個控制器共享該服務狀態。

您可以直接從控制器更新服務狀態,也可以通過在服務本身上調用方法來更新服務狀態。

看下面的例子。 我希望這能闡明一些信息。

干杯!

 angular.module('app', []) .service('MyService', function(){ var self = this; self.state = { name: 'John' }; self.changeNameFromService = function() { self.state.name = 'Peter'; } }) .controller('Ctrl1', function($scope, MyService){ $scope.state = MyService.state; $scope.changeName = function(){ // update the state of the scope, which is shared with other controllers by storing the state in a service $scope.state.name = 'Mary'; } }) .controller('Ctrl2', function($scope, MyService){ $scope.state = MyService.state; // call a method defined in service $scope.changeName = MyService.changeNameFromService; }) 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="app"> <div ng-controller="Ctrl1"> Ctrl1: {{state.name}} <button ng-click="changeName()">Change name!</button> </div> <div ng-controller="Ctrl2"> Ctrl2: {{state.name}} <button ng-click="changeName()">Change name from service!</button> </div> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM