当我尝试使用
在NavigationView的视图堆栈上推送视图时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()
方法?
答案 0 :(得分:1)
看起来您的视图尚未创建,因此它仍然是一个类而不是一个实例。类没有.get,只有实例。如果你想通过传递视图来获得幻想(绝对鼓励:)),而不是简单地让childView层次结构处理它们,你也必须创建它们。尝试传入MyApp.MyView.create()。