angularjs中的嵌套控制器

Sim*_*mon 1 javascript angularjs angular-ui-bootstrap

我们对此很新.最后设法让ui-Bootstrap使用日期控件: -

<div class="col-md-2 box" ng-controller="ResultFilter" >  
<h2>Filter</h2>

    <p class="input-group" ng-controller="DatepickerDemoCtrl">
        <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="resultfilter.startdate" is-open="opened1" min="minDate" max="'2015-06-22'" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" />
        <span class="input-group-btn">
        <button class="btn btn-default" ng-click="open($event, 'opened1')"><i class="glyphicon glyphicon-calendar"></i></button>
        </span>
    </p>
   <p class="input-group" ng-controller="DatepickerDemoCtrl">
        <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="resultfilter.enddate" is-open="opened2" min="minDate" max="'2015-06-22'" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" />
        <span class="input-group-btn">
        <button class="btn btn-default" ng-click="open($event, 'opened2')"><i class="glyphicon glyphicon-calendar"></i></button>
        </span>
    </p>
 <p class="input-group">
    <select class="form-control" ng-model="resultfilter.frequency">
  <option value="Daily">Daily</option>
<option value="Weekly">Weekly</option>
<option value="Monthly">Monthly</option>
<option value="Yearly">Yearly</option>
</select>
      </p>
</div>
Run Code Online (Sandbox Code Playgroud)

我们用以下角度捕获点击

CISApp.controller('ResultFilter', function ResultFilter($scope, $http) {
$scope.updateResults = function () {

 };
});
Run Code Online (Sandbox Code Playgroud)

但是,我们如何得到开始日期的值,因为它在DatePickerDemoCtrl的控制器内?以下不起作用?

$scope.resultfilter.startdate
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激

Kha*_* TO 5

ng-controller创造新的范围.你们两个DatepickerDemoCtrl都是孩子的范围ResultFilter.在你的情况下,你可以尝试:

$scope.$$childHead.resultfilter.startdate
Run Code Online (Sandbox Code Playgroud)

这个解决方案不推荐IMO,因为它创建了紧密耦合的代码,你假设这个控制器有一个子范围,一些更推荐的方法:

  • 使用$ on,$ emit,$ broadcast在范围之间进行通信.
  • 创建共享服务以保持状态(我认为不适用于您的情况)