Nano Hash - криптовалюты, майнинг, программирование

Sproutcore: не удается вызвать метод «получить» с нулевым значением

Я подумал, что было бы интересно проверить 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

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

Спасибо

28.05.2011

Ответы:


1

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

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

29.05.2011
  • Да, я понял, что это, вероятно, моя проблема. Все еще не уверен, как на самом деле исправить это для 1.6, хотя.. 29.05.2011

  • 2

    Видимо проблема кроется в последней части:

     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({
    
        })
    })
    

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

    29.05.2011
  • Я бы подумал, что настоящие проблемы заключались в необходимости указывать дочерние представления, а не имена дочерних представлений. 31.05.2011
  • Однако он отлично работал без дочерних представлений, поэтому не совсем уверен. Он начал работать, когда я изменил имена, с дочерними представлениями или без них. 31.05.2011

  • 3

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

    02.06.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..