javascript - 如何使用 Angular 将 firebase 数据绑定(bind)到 fullCalendar

标签 javascript angularjs jquery-plugins firebase fullcalendar

我正在尝试将 FireBase 中的数据绑定(bind)到 Angular 中的 fullCalendar 插件。 但该插件似乎不喜欢 data.$asObject()data.$as Array()

这是我到目前为止不起作用的(没有显示 session ):

Controller :

(function () {
    var app = angular.module("myCal");
    app.controller('meetingsCtrl', meetingsCtrl);

    function meetingsCtrl($scope, $http, $location, $firebase) {

        var ref = new Firebase(firebaseurl); // real url
        var meetings = $firebase(ref);

        $scope.fireEvents = meetings.$asObject(); // $asArray() not working as well

    } // controller func

})();

指令:

(function () {
    var app = angular.module("myCal");

    app.directive("sbCalendar", function () {
        return {
            link: function (scope, element, attrs) {
                $(element).fullCalendar({

                    header: {
                        left: 'prev,next today',
                        center: 'title',
                        right: 'month,agendaWeek,agendaDay'
                    },
                    eventLimit: true, // allow "more" link when too many events
                    aspectRatio: 4,
                    events: scope.fireEvents,
                    editable: true,
                    eventDrop: function (event, delta, revertFunc) {

                    } // event drop

                }); // fullCalendar init & options

            } // link

        } // return 
    }); // directive
})();

我上传到 Firebase 的 json 文件(fb url 指向 session ):

{
    "meetings": {
        "x1": {
            "title": "test subject",
            "start": "2016-10-20",
            "end": "2016-10-20",
            "description": "some long description test"
        },
        "x2": {
            "title": "test2 subject",
            "start": "2016-11-05",
            "end": "2016-11-06",
            "description": "another long description for test 2"
        },
        "x3": {
            "title": "test3 new subject",
            "start": "2016-11-11",
            "end": "2016-11-11",
            "description": "yet another description for test 3"
        }
    }
}

最佳答案

(function () {
    var app = angular.module("myCal");
    app.controller('meetingsCtrl', meetingsCtrl);

    function meetingsCtrl($scope, $http, $location, $firebaseArray) {
        var ref = new Firebase(firebaseurl); // real url
        $scope.fireEvents = $firebaseArray(ref);
    }

})();

这是较新的语法 - 确保您使用最新的 Angular Fire 版本,在撰写本文时,Firebase 网站上有可用的 1.1.3 CDN。

在这里查看更多内容:

https://www.firebase.com/docs/web/libraries/angular/quickstart.html

app.directive("sbCalendar", function () {
    return {
        link: function (scope, element, attrs) {
            scope.fireEvents.$loaded(function(){
                $(element).fullCalendar({
                    header: {
                        left: 'prev,next today',
                        center: 'title',
                        right: 'month,agendaWeek,agendaDay'
                    },
                    eventLimit: true, // allow "more" link when too many events
                    aspectRatio: 4,
                    events: scope.fireEvents,
                    editable: true,
                    eventDrop: function (event, delta, revertFunc) {

                    } // event drop

                }); // fullCalendar init & options
            })

        } // link

    } // return 
}); // directive

关于javascript - 如何使用 Angular 将 firebase 数据绑定(bind)到 fullCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836938/

相关文章:

javascript - 动态 Angular.js 菜单

javascript - 在使用 jQuery 加载页面后加载广告

javascript - Shadowbox(图片库插件)仅显示黑色窗口

javascript - IE 不读取真正的按钮值!如何解决这个问题?

javascript - 如何在不同的图像中给出不同的标题?

javascript - 如何自动滚动到列表中最后插入的值(非底部)。[[注 :List is Sorted]]

javascript - AngularJS 在处理 HTML Void 元素的自定义指令时是否有错误

javascript - 渲染后如何执行指令代码?

javascript - 甜蜜警报正在循环中覆盖先前的警报

javascript - 如何创建输入下拉列表?