Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$PROMITE results更新子数组时更新嵌套数组值_Javascript_Arrays_Angularjs_Promise - Fatal编程技术网

Javascript 使用$PROMITE results更新子数组时更新嵌套数组值

Javascript 使用$PROMITE results更新子数组时更新嵌套数组值,javascript,arrays,angularjs,promise,Javascript,Arrays,Angularjs,Promise,我正在使用FullCalendar组件构建一个调度程序应用程序,该组件从嵌套的数组模型$scope.eventSources(由多个子事件数组组成,gDataService.events就是其中之一)馈送事件。它使用了受这个plunkr示例启发的$resource 当以下控制器首次运行时,gDataService.events被分配函数(开始、结束、回调)。。。作为它的值,$scope.eventSource被分配一个由1个元素组成的数组(这是函数)。问题是,当calFactory通过$reso

我正在使用FullCalendar组件构建一个调度程序应用程序,该组件从嵌套的数组模型$scope.eventSources(由多个子事件数组组成,gDataService.events就是其中之一)馈送事件。它使用了受这个plunkr示例启发的$resource

当以下控制器首次运行时,gDataService.events被分配函数(开始、结束、回调)。。。作为它的值,$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",{});
    }
};
}]);

原因是
$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];
});

这里似乎有一个括号问题,因为我看到您也在控制器中定义了一个工厂。

您正在使用一个方法分配一个数组,该方法包含对
$scope的回调。eventSources
是否有意这样做?您不能直接执行
$scope.eventSources=events
?感谢您的及时回复。正如你所建议的,我把它放在函数定义之外,但是没有用。关于括号的问题,我忘了把结束括号放在这里。已编辑。@javvva是否可以设置代码的plnkr?