【问题标题】:Rendering fullcalendar.io in polymer a core-animated-pages section在聚合物中渲染 fullcalendar.io 的核心动画页面部分
【发布时间】:2015-03-31 21:22:47
【问题描述】:

我有一个应用设置,使用核心动画页面在我的部分之间进行转换。在一个部分中,我尝试渲染 fullcalendar 插件 (http://fullcalendar.io/)。使用 sbg-fullcalendar 元素执行此操作:https://github.com/Smorgasbord-Development/sgb-fullcalendar

如果我将元素放在我的应用程序的第一部分,这将非常有用。应用程序加载并在 domReady 事件上呈现日历。但是,我想包含在任何部分中,并且当我这样做时它不会呈现。

我对 sbg-calendar 元素进行了更新,以侦听 core-animated-pages-transition-end 事件。 calendar 元素确实捕获了事件并尝试创建一个日历,但它仍然没有呈现。

渲染问题可能是因为 jQuery 选择器在 shadow dom 中不起作用?我对聚合物非常陌生,不确定它的很多内部工作原理。

这是我的索引页。

<core-animated-pages id="pages" selected="{{selected}}" transitions="cross-fade fade-slide-up fade-scale" fit>

        <section layout vertical>

            <categories-page class="page" id="categories" cross-fade?="{{largeScreen}}" fade-slide-up?="{{!largeScreen}}" heading="{{heading}}" flex></categories-page>
        </section>

        <section layout vertical>
            <calendar-page  class="page" cross-fade?="{{largeScreen}}" fade-slide-up?="{{!largeScreen}}" heading="{{heading}}" flex></calendar-page>
        </section>
    </core-animated-pages>

和日历页面:

<link rel="import" href="../base-page/base-page.html">

        <!-- Main -->
        <div main layout vertical>
            <core-header-panel id="headerPanel" mode="seamed" flex>
                <core-toolbar>
                    <paper-icon-button icon="menu" core-drawer-toggle>
                    </paper-icon-button>
                    <div id="title" flex>{{heading}}</div>

                    <paper-menu-button id="menuBtn" noink>
                        <paper-icon-button icon="more-vert" noink></paper-icon-button>
                        <paper-dropdown class="dropdown" halign="right">
                            <core-menu class="menu">
                                <paper-item>Settings</paper-item>
                                <paper-item>Help</paper-item>
                                <paper-item>Feedback</paper-item>
                            </core-menu>
                        </paper-dropdown>
                    </paper-menu-button>

                </core-toolbar>
                <div class="content" style="max-height:1000px;">

                        <sgb-fullcalendar id="calendar" defaultView="month"></sgb-fullcalendar>

                </div>
            </core-header-panel>
        </div>
</template>
<script>
    (function () {
        Polymer({
            willPrepare: function () {
                this.super();

            },
            getUrl: function (idx) {
                console.log(window.location.pathname + '/' + idx);
                return '/subjects/' + idx;
            }              
        });
    })();
</script>

我也一直使用 Rob Dodson 的联系人应用作为我的应用的示例。

【问题讨论】:

    标签: jquery fullcalendar polymer core-elements


    【解决方案1】:

    我已经通过使用 domReady 方法成功地在我的一个部分(我也使用了核心动画页面)上呈现了 fullCalendar。在你的情况下我会这样做:

    <polymer-element name="calendar-page" attributes="Your Attribute">
    <template>
        <style>
            :host {
                display: block;
            }
        </style>
        <link rel='stylesheet' href='../fullcalendar/fullcalendar.css'>
        <div id='calendar'></div>
    </template>
    <script>
        Polymer("calendar-page",{
            domReady: function() {
              $(this.$.calendar).fullCalendar({
                    weekends: false ,
                    allDaySlot: false,
                    minTime : "06:00:00",
                    maxTime : "18:00:00",
                    defaultView: 'agendaWeek',
                    header: {left:'title', center: 'agendaDay,agendaWeek,month', right:  'today prev,next'},
                    googleCalendarApiKey: 'YourApiKey',
                    events: {
                        googleCalendarId: 'YourCalendarId',
                    },
                    eventClick: function(calEvent, jsEvent, view) {
                        //console.log(calEvent);
                        return false;
                    },
                })
            },
        });
    </script>
    

    不要忘记从元素内部链接 css 文件。希望对您有所帮助!

    【讨论】:

    • 谢谢!!!!!!!这真的帮助我克服了我的问题。对于来自主干、角度和 jquery 空间的我来说,Polymer 仍然有点棘手。你的简单实现真的很有帮助。谢谢!
    • 如果您使用的是 Polymer 1.x,则 domReady 不再可用。在此处阅读如何替换它:polymer-project.org/1.0/docs/migration.html#domready
    猜你喜欢
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多