javascript - 实现 NavigationView 时出现问题 - Sc.View 不可观察

标签 javascript navigation key-value-observing sproutcore sproutcore-views

当我尝试使用导航 View 的 View 堆栈上推送 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框架的bug吗?因为他们在 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() 方法?

最佳答案

看起来你的 View 还没有创建,所以它仍然是一个类而不是一个实例。类没有 .get,只有实例。如果您喜欢(绝对鼓励:))传递 View ,而不是简单地让 childView 层次结构处理它们,您还必须创建它们。尝试传入 MyApp.MyView.create() 。

关于javascript - 实现 NavigationView 时出现问题 - Sc.View 不可观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000081/

相关文章:

javascript - 如何在javascript中用 '[['替换 '${'

javascript - MYSQL - PHP - 使用从提交按钮传递的变量更新数据库中的值

html - 将导航菜单居中

html - 父 div 隐藏的下拉菜单

ios - Swift 观察 UIApplication 属性

javascript - 如何从移动设备的 iframe 中找到设备高度?

javascript - 在 CSS 媒体打印查询中自定义模态高度和宽度

ios - 如何显示具有多个导航应用程序选项的操作表

cocoa - NSCollectionView 中的数据绑定(bind)

ios - 应用程序崩溃显示 "UITableView was deallocated while key value observers were still registered with it"