我正在使用FullCalendar组件构建调度程序应用程序,该组件从嵌套数组模型$ scope.eventSources中提供事件,这些事件由多个子事件数组组成(gDataService.events就是其中之一)。它使用受这个plunkr示例启发的$ resource。 http://plnkr.co/edit/pIDltQRV6TQGD4KQYnj7?p=preview
当以下控制器首次运行时,gDataService.events被赋予函数(start,end,callback)...作为其值,$ scope.eventSource被赋予一个1元素的数组(这是函数)。问题是当calFactory通过$ resource成功从服务器提取数据时,gDataService.events正确填充了事件数据,但是$ scope.eventSource没有(即仍保留1个函数元素的旧值) 。我尝试了$ scope。$ apply,但它抱怨摘要已经在进行中。
非常感谢您的帮助。
myApp.controller("MainCtrl", function($scope,$compile,uiCalendarConfig, calFactory, gDataService) {
var getEventSuccessCallback = function (data, status) {
gDataService.events = function(start, end, callback) {
var events;
events = data.query({
start: start,
end: end
});
events.$promise.then(function(value){
gDataService.events = value ;
callback(gDataService.events);
};
$scope.eventSources = [gDataService.events];
};
})
myApp.factory("calFactory",['$resource', function($resource) {
return {
getEvents: function () {
return $resource("/caldata/?c=to1_list",{});
}
};
}]);
答案 0 :(得分:0)
原因是$scope.eventSources = [gDataService.events];
在函数中定义,应该在函数外部的控制器中定义。试试这个:
myApp.controller("MainCtrl", function($scope,$compile,uiCalendarConfig, calFactory, gDataService) {
var getEventSuccessCallback = function (data, status) {
gDataService.events = function(start, end, callback) {
var events;
events = data.query({
start: start,
end: end
});
events.$promise.then(function(value){
gDataService.events = value ;
callback(gDataService.events);
};
};
$scope.eventSources = [gDataService.events];
});
似乎你有一个支架问题,因为我看到你也在控制器内定义了一个工厂。