我正在进行角度应用,我有多个角度控制器。
请在下面找到示例代码:
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。
答案 0 :(得分:1)
我知道这不是处理问题的最优雅方式,但如果我理解你想要实现的目标,我建议使用角度事件系统。有关详细信息,请参阅this博文。特别是使用$ rootScope。($ emit / $ broadcast)。
为了更清楚,您可以使用:
ctrlTwo中的$rootScope.$broadcast('someEventName', someValue)
然后
$scope.$on('someEventName', function (event, data) { //data passed in ctrlTwo })
ctrlOne中的