我正在开发角度应用程序,我有多个角度控制器。

请在下面找到示例代码:

app.controller('ctrlOne',function($rootScope, $scope, $uibModal, MyService) {

//have some functionality here
$scope.loadCtrlOneData = function () {
        alert("loadCtrlOneData");
        MyService.getSIDResult().then(
            function (response) {
        //business logic
       })
}}

app.controller('ctrlTwo', function ($rootScope, $scope, $uibModal, MyService) {
//some functionality here
function loadData() { //jQuery load to load the calendar in the field
MyService.getValueForDatePicker().then(
            function (response) {
              var cb = function(start, end, label) {
            //This function is called when user submit the date in datepicker
$('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
                    }
})
}
 loadData();
})


上面的代码是我的代码的粗略图。加载页面后,将加载ctrlOne和ctrlTwo。 CtrlTwo用于在输入字段中显示datePicker,如以下代码所示:

<input id="reportrange" ng-controller="ctrlTwo">


当用户从日期选择器中选择日期并单击提交时,应再次调用ctrlOne并在ctrlOne中提供日期值,我有一些实现的逻辑并在浏览器中再次显示结果。请找到datepicker的演示here。请建议用户选择日期并单击提交时如何调用ctrlOne,日期值应可用于ctrlOne。

最佳答案

我知道这不是解决问题的最优雅的方法,但是如果我正确理解了您想要实现的目标,那么我建议使用角度事件系统。有关更多详细信息,请参见this博客文章。尤其是与$ rootScope一起使用。($ emit / $ broadcast)。

为了更清楚,您可以使用:
ctrlTwo中的$rootScope.$broadcast('someEventName', someValue)然后

$scope.$on('someEventName', function (event, data) { //data passed in ctrlTwo })


在ctrlOne中

09-18 05:42