在嵌套控制器之间共享模型以进行ng-Change

时间:2014-07-11 22:50:51

标签: javascript angularjs

我的AngularJS应用程序中有两个控制器。在我的第一个控制器中,我有一个输入/下拉字段,我希望在每个ng-Change的第二个嵌套控制器中使用该值。例如,

我的代码(HTML)::

<body ng-app="myApp" ng-controller="DropdownCtrl">
   <input type="text" class="form-control" ng-model="dt" ng-change="changeDate(dt)" /> 
   <span class="input-group-btn">
      <button type="button" class="btn btn-default" ng-click="open($event)">
          <i class="glyphicon glyphicon-calendar"></i>
      </button>
   </span>      

    <div class="row"  ng-controller="MainCtrl"> 
      <!-- other code -->
    </div>
</body>

现在我想做什么,当ng-Change发生时,我想在 MainCtrl

中使用changeDate(dt)函数的值

1 个答案:

答案 0 :(得分:1)

为了使父控制器与子控制器通信,父控制器应使用$scope.$broadcast('changedValue', dt);

这将向所有儿童控制器广播dt的新值。然后,childController应该使用以下代码监听更改:

$scope.$on('parent-message', function (event, dt) {
    //you can now use dt in the child controller to do whatever it is you wanted
});

使用routeProviders和ng-view

时,这一点特别好

这是一个很棒的tutorial,可以很好地解释这一点: