1

Когда я пытаюсь нажать взгляд на стек вид моего NavigationView с помощьюПроблема реализации NavigationView - Sc.View не наблюдается

MyApp.getPath('mainPage.mainPane.content.nav').push(MyApp.MyView); 

Это дает мне это:

Uncaught TypeError: Object function (props) { 
     this.__sc_super__ = ret.prototype; 
     return this._object_init(props); 
    } has no method 'get' 

Очевидно, SC .View не соответствует требованиям KVO. Тогда это ошибка в структуре SproutCore? Потому что они делают это в источнике SC.NavigationView:

view.get("topToolbar"); // with `view` being the view I passed in as shown above 

MyApp.MyView выглядит следующим образом:

MyApp.MyView = SC.View.extend({ 
    childViews: 'search results'.w(), 

    search: SC.TextFieldView.design({ 
     layout: { centerX: 0, top: 40, width: 400, height: 30 }, 
     hint: "Search" 
    }), 

    results: SC.TemplateView.design({ 
     templateName: 'results' 
    }), 

    topToolbar: SC.NavigationBarView.design({ 
     childViews: ['title'], 
     layout: { height: 44 }, 
     title: SC.LabelView.design({ 
      controlSize: SC.LARGE_CONTROL_SIZE, 
      layout: { width: 100, height: 24, centerX: 0, centerY: 0 }, 
      value: 'Title' 
     }) 
    }) 
}); 

Но я думаю, что разработчики SproutCore являются способом умнее и опытнее, чем я, так что это, вероятно, что-то Я сделал.

Почему мой подкласс SC.View не имеет метода get()?

ответ

1

Похоже, что ваш вид еще не создан, поэтому он по-прежнему является классом, а не экземпляром. У классов нет .get, только экземпляров. Если вы получаете фантазию (определенно поощряется :)) с прохождением взглядов вокруг, а не просто позволяя иерархии childView обрабатывать их, вы также должны создавать их. Попробуйте перейти в MyApp.MyView.create().

+0

О, так глупо. Спасибо! – 11684

+0

Итак, у него появилось другое сообщение об ошибке: 'NavigationBarView требует SC.Animatable. Пожалуйста, сделайте свое приложение или фреймворк рамкой анимации. CRASH.' Ну, я даже не могу найти SC.Animatable в документах, поэтому я застрял сейчас. – 11684

+0

Это отдельный вопрос и, возможно, заслуживает собственного вопроса. Во всяком случае, ответ на две части здесь. Часть 1: вы можете включить фреймворк без настроек по умолчанию, отредактировав Buildfile вашего приложения так, чтобы бит «требуется» выглядел следующим образом:: required => [: sproutcore,: «sproutcore/animation»] – Dave