同一页面上两个不同控制器的Angularjs双向绑定字段

randominstanceOfLivingThing

我创建了这个示例页面,其中包含两个控制器,并且我正在尝试如何使用双向绑定,以便h3一旦用户输入了年龄,就可以更新anotherController中标题。更新年龄后,我不确定如何连接控制器。我正在寻找事件流为Update ageHolder.age-> Update AgeData-> Update anotherController getCategory表达式。

使用这两个控制器,我能够触发ageUpdated事件,但无法获取有关如何更新中的文本的信息h3

<!DOCTYPE html>
<html ng-app="factoryApp">
<head>
 <meta charset="utf-8" />
 <script src="/scripts/angular.js"></script>
 <script src="/scripts/FactoryApp.js"></script>
</head>
<body>
  <div ng-controller="factoryController as gsc">
   <label>Age:<input type="text" ng-model="gsc.ageHolder.age" ng-model-options="{ getterSetter: true }"/></label>
  </div>
  <div ng-controller="anotherController as asc">
    <h3>You are {{ asc.getCategory() }}.</h3>
  </div>  
</body>
</html>

  var app = angular.module('factoryApp', []);
  app.factory('AgeData', function () {
    return {age: 0};
  });
  app.controller('factoryController', function(AgeData){
      var gsc = this, _age = 20;
      gsc.ageHolder = {};
      gsc.ageHolder.age = function (anAge) {
       if (arguments.length) { 
        AgeData.age = anAge; 
        AgeData.sendMessage(anAge); 
       }
      };
  });

  app.controller('anotherController', function(AgeData, $scope) {
    console.log('Age is ', AgeData);
    var asc = this;
    var age = AgeData.age;
    $scope.$on('ageUpdated', function() {
      console.log('Age is updated');
      age = AgeData.age;
    });
    asc.getCategory = function() {
      if (age < 5)
         return "Toddler";
      else if (age < 13)
         return "Child";
      else if (age < 20)
         return "Teen";
      else if (age < 30)
         return "Youngster";
      else if (age < 45)
         return "Middle age";
      else if (age < 60)
         return "Mature person"
      else
        return "Senior Person";                  
    }
  });
mtamma

      var app = angular.module('factoryApp', []);
      app.factory('AgeData', function ($rootScope) {
          return {
              age: 0,
              'sendMessage': function (msg) {
                  $rootScope.$broadcast('ageUpdated', msg);
             }
         };
      });

      app.controller('factoryController', function(AgeData){
          var gsc = this;
          gsc.ageHolder = {
              'age': AgeData.age
          };
          gsc.ageHolder.setAge = function (anAge) {
              if (arguments.length) { 
                  AgeData.age = anAge; 
                  AgeData.sendMessage(anAge); 
              }
          };
      });

      app.controller('anotherController', function(AgeData, $scope) {
          console.log('Age is ', AgeData);
          var asc = this;
          var age = AgeData.age;
          $scope.$on('ageUpdated', function() {
              console.log('Age is updated');
              age = AgeData.age;
          });

          asc.getCategory = function() {
              if (age < 5)
                  return "Toddler";
              else if (age < 13)
                  return "Child";
              else if (age < 20)
                  return "Teen";
              else if (age < 30)
                  return "Youngster";
              else if (age < 45)
                  return "Middle age";
              else if (age < 60)
                  return "Mature person"
              else
                  return "Senior Person";                  
              }
          });
    <!DOCTYPE html>
    <html ng-app="factoryApp">
    <head>
        <meta charset="utf-8" />
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    </head>
    <body>
        <div ng-controller="factoryController as gsc">
            <label>Age:</label>
            <input type="text" ng-model="gsc.ageHolder.age" ng-model-options="{getterSetter: true }" ng-change="gsc.ageHolder.setAge(gsc.ageHolder.age)"/>
        </div>
        <div ng-controller="anotherController as asc">
            <h3>You are {{ asc.getCategory() }}.</h3>
        </div>  
    </body>
    </html>
    
我认为有些人认为您错过了代码:

  • 您侦听“ ageUpdate”事件,但没有函数触发该事件
  • 您将模型分配到输入文本中,但是如果输入值更新/更改,则会忘记添加观察者。
  • 您错过了工厂的“ sendMessage”功能。

请看一下上面的代码,告诉我这是预期的结果吗?

干杯,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在同一页面中使用两个控制器

来自分类Dev

是否可以在同一页面上运行两个不同版本的ReactJS?

来自分类Dev

Apex-同一页面上的两个按钮,分支到不同的位置

来自分类Dev

我希望同一页面上的两个Flexslider以不同的速度运行

来自分类Dev

同一页面上的两个不同的Yammer共享按钮

来自分类Dev

AngularJS在同一页面上有多个控制器-仅第一个有效

来自分类Dev

如何通过单击控制器不同的同一JSP页面上的两个不同按钮来开发两个call ajax?

来自分类Dev

如何将具有不同模块的两个图表放在同一页面上?

来自分类Dev

单击Struts 2中同一页面上的两个按钮时,行为不同

来自分类Dev

在同一页面上执行两个不同的操作时,如何处理mapStateToProps()函数?

来自分类Dev

如何将具有不同模块的两个图表放在同一页面上?

来自分类Dev

使用 css + html 在同一页面上编辑两个不同的 iframe min-height

来自分类Dev

如何在同一页面上有两个具有不同配置的TinyMCE编辑器

来自分类Dev

如何在同一页面上多次使用角度控制器?

来自分类Dev

在同一页面上多次调用控制器

来自分类Dev

如何在同一页面上初始化两个Draftjs编辑器?

来自分类Dev

如何为同一页面上的两个表单定义唯一的validateForm?

来自分类Dev

如何在同一页面上呈现两个菜单?

来自分类Dev

动态填充同一页面上其他两个选择的选择

来自分类Dev

同一页面上的两个Angular2组件

来自分类Dev

React Router问题:React在同一页面上渲染两个组件

来自分类Dev

使用react-hook-form在同一页面上添加两个表单

来自分类Dev

在ChakraUI中使用useDisclosure()无法在同一页面上使用两个模式

来自分类Dev

提交在同一页面上呈现的两个不相关的表单

来自分类Dev

Inno Setup禁用同一页面上的两个按钮

来自分类Dev

验证同一页面上的两个表单

来自分类Dev

动态填充同一页面上其他两个选择的选择

来自分类Dev

Angular两个应用程序在同一页面上

来自分类Dev

如何在同一页面上放置两个幻灯片框?

Related 相关文章

  1. 1

    在同一页面中使用两个控制器

  2. 2

    是否可以在同一页面上运行两个不同版本的ReactJS?

  3. 3

    Apex-同一页面上的两个按钮,分支到不同的位置

  4. 4

    我希望同一页面上的两个Flexslider以不同的速度运行

  5. 5

    同一页面上的两个不同的Yammer共享按钮

  6. 6

    AngularJS在同一页面上有多个控制器-仅第一个有效

  7. 7

    如何通过单击控制器不同的同一JSP页面上的两个不同按钮来开发两个call ajax?

  8. 8

    如何将具有不同模块的两个图表放在同一页面上?

  9. 9

    单击Struts 2中同一页面上的两个按钮时,行为不同

  10. 10

    在同一页面上执行两个不同的操作时,如何处理mapStateToProps()函数?

  11. 11

    如何将具有不同模块的两个图表放在同一页面上?

  12. 12

    使用 css + html 在同一页面上编辑两个不同的 iframe min-height

  13. 13

    如何在同一页面上有两个具有不同配置的TinyMCE编辑器

  14. 14

    如何在同一页面上多次使用角度控制器?

  15. 15

    在同一页面上多次调用控制器

  16. 16

    如何在同一页面上初始化两个Draftjs编辑器?

  17. 17

    如何为同一页面上的两个表单定义唯一的validateForm?

  18. 18

    如何在同一页面上呈现两个菜单?

  19. 19

    动态填充同一页面上其他两个选择的选择

  20. 20

    同一页面上的两个Angular2组件

  21. 21

    React Router问题:React在同一页面上渲染两个组件

  22. 22

    使用react-hook-form在同一页面上添加两个表单

  23. 23

    在ChakraUI中使用useDisclosure()无法在同一页面上使用两个模式

  24. 24

    提交在同一页面上呈现的两个不相关的表单

  25. 25

    Inno Setup禁用同一页面上的两个按钮

  26. 26

    验证同一页面上的两个表单

  27. 27

    动态填充同一页面上其他两个选择的选择

  28. 28

    Angular两个应用程序在同一页面上

  29. 29

    如何在同一页面上放置两个幻灯片框?

热门标签

归档