我正在开发角度应用程序,我有多个角度控制器。
请在下面找到示例代码:
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中