Sproutcore: невозможно вызвать метод 'get' из null - PullRequest
1 голос
/ 29 мая 2011

Я думал, что было бы интересно проверить Sproutcore, но я столкнулся с ошибкой, которую, похоже, не могу понять. Я следую недавнему руководству по NetTuts + по написанию микроблога с фреймворком. Мой код следующий:

Microblog.mainPage = SC.Page.design({

mainPane: SC.MainPane.design({
    childViews: 'topView postView contentView'.w(),

    topView: SC.ToolbarView.design({
        childViews: 'appName'.w(),
        layout: { top: 0, left: 0, right: 0, height: 40 },
        anchorLocation: SC.ANCHOR_TOP,

        appName: SC.LabelView.design({
            layout: { top: 5, left: 5, width: 100 },
            displayValue: "MicroBlog App",
            layerId: "mb-logo" // html id attribute
        })
    }),

    postView: SC.View.design({
        childViews: 'form'.w(),
        layout: { top: 40, height: 75 },
        backgroundColor: 'white',

        form: SC.View.design({
            childViews: 'postContent post'.w(),
            layout: { left: 200, right: 200 },

            postContent: SC.TextFieldView.design({
                layout: { top: 10, left: 10, right: 10, height: 60 },
                isTextArea: YES,
                hint: "What's on your mind?"
            }),

            post: SC.ButtonView.design({
                layout: { top: 80, right: 10, width: 100 },
                title: "Post",
                isDefault: YES
            })
        })
    }),

    contentView: SC.ScrollView.design({
        hasHorizontalScroller: NO,
        layout: { top: 135, bottom: 0, left: 0, right: 0 },
        contentView: SC.ListView.design({

        })
    })
})
});

Однако по какой-то причине она не загружает кнопку, и когда я нажимаю на страницу, на которой идет мой buttonView или contentView, я получаю следующую ошибку в моей консоли:

Uncaught TypeError: Cannot call method 'get' of null

Я пытался найти его, но не повезло. Я использую Sproutcore 1.6.

Спасибо

Ответы [ 3 ]

2 голосов
/ 29 мая 2011

Очевидно, проблема заключается в последней части:

 contentView: SC.ScrollView.design({
    hasHorizontalScroller: NO,
    layout: { top: 135, bottom: 0, left: 0, right: 0 },
    contentView: SC.ListView.design({

    })
})

По некоторым причинам, эти два представления не могут иметь одинаковое имя.Я изменил это на:

contentView: SC.ScrollView.design({
    childViews: 'contentListView'.w(), // do i need this here?
    hasHorizontalScroller: NO,
    layout: { top: 150, bottom: 0, left: 0, right: 0 },
    contentListView: SC.ListView.design({

    })
})

Кажется, теперь работает нормально!

2 голосов
/ 29 мая 2011

Приложение NetTuts sproutcore построено на основе sproutcore 1.4

Sproutcore значительно изменяется между версиями.Я предполагаю, что это ваша проблема.

1 голос
/ 02 июня 2011

Вы уже решили эту проблему, но: ошибка «Невозможно вызвать метод 'get' of null» в SproutCore довольно бесполезна, но обычно это означает, что в коде есть синтаксическая ошибка или что-то ещеотсутствует в объявлении объекта, который вы пытаетесь вызвать get().В вашем случае, я думаю, добавление атрибута childViews помогло, и неоднозначность метки contentView также была необходима.

...