在 AngularJS 中,用于选择不同控制器的选项 - 如何刷新

in angularjs, options for select in different controller - how to refresh?

本文关键字:选项 何刷新 刷新 控制器 AngularJS 用于 选择      更新时间:2023-09-26

有两个不同的控制器,一个用于语言,langCntl,一个用于单词,wordCntl

wordCntl记录中,有一个名为 ln 的属性。 ln使用 ng-select 显示在表单中,ngOptions基于langCntl控制器中的记录。

当记录在langCntl中更改时,如何在wordCntlln刷新select

朗莫德.js

var langMod = angular.module('langMod', ['ngResource']);langMod.controller('langCntl',function($scope,$http) {  $scope.langs = [];  $scope.reset = 函数() {    $http.get( '/lang.jsn').success( function(data) {      console.log( 'http.success: data='+data );      $scope.langs = angular.copy($scope.origs);    });  };  $scope.reset();});langMod.controller('wordCntl',function($scope) {  var langElem = document.querySelector("[ng-controller='langCntl']");  $scope.langs = angular.element(langElem)).scope().langs;  $scope.rcd = { ln: 'en', word: '?' };});

索引.html

      
        <身体>
          
            <选择 ng-model="rcd.ln" ng-options="c.lang 作为 c.name for c in langs">
          
        
      
    

多么有趣(对我来说):

  1. langCntl.langs更改后,wordCntl.langs 仍然是空数组。
  2. ngoptions中,有没有办法直接使用langCntl中的记录?

Reference angualrjs sdk:$broadcast(名称,参数)

事件名称向下分发到所有子作用域(及其子作用域),通知已注册的 ng.$rootScope.Scope#$on 侦听器。

事件生命周期从调用$broadcast的范围开始。侦听此作用域上的名称事件的所有侦听器都会收到通知。之后,该事件将传播到当前范围的所有直接和间接范围,并在此过程中调用所有注册的侦听器。活动无法取消。