【问题标题】:Binding a Simple Viewmodel with Single Record将简单视图模型与单个记录绑定
【发布时间】:2016-01-02 19:54:58
【问题描述】:

我创建了 this fiddle 来显示我想要做什么。

基本上,我配置了一个Store,它只加载一条记录(实际上它将是当前登录的用户)。但是,我似乎无法正确地将任何东西绑定到该商店。我怎样才能让{u.name} 正确输出?

代码如下:

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name']
});

Ext.application({
    name : 'Fiddle',

    launch : function() {

        new Ext.Component({
            renderTo: Ext.getBody(),

            viewModel: {
                stores: {
                    u: {
                        proxy: {
                          type: 'ajax',
                          url: 'user.json'
                        },

                        model: 'User',

                        autoLoad: true
                    }
                }
            },

            bind: 'Test name: {u.name}'
        });

    }
});

【问题讨论】:

    标签: javascript extjs mvvm extjs6


    【解决方案1】:

    试试bind: 'Test name: {u.data.items.0.name}'

    统一更新: 作为对此的解释 - u 是一个具有其属性的对象,因此尝试绑定到 u.name 实际上会绑定到 name 属性的商店。如果商店没有名称属性,它将始终为空。商店收到的数据放在 data 属性中。 Items 属性包含接收数据的原始数组等。

    【讨论】:

    • 如果您不确定答案,请尽可能将其作为评论发布,而不是作为答案发布。
    • @ρss 我很确定我的回答。
    • 那么请对你的回答提供一些解释,说明它为什么会起作用,它可以帮助像我这样的不聪明的用户:P,而且它也会让你的回答得到支持!
    • 我希望这样更好吗? ;)
    【解决方案2】:

    在您的小提琴中,您使用的是商店,而看起来您只需要一条记录。

    使用links 而不是stores 应该会更好,例如:

    links: {
        u: {
            type: 'User',
            id: 1
        }
    }
    

    基于您的代码的工作示例:https://fiddle.sencha.com/#fiddle/uuh

    【讨论】:

    • 当 id=2 的用户登录时会发生什么?如何更动态地使用链接?
    • @CD.. -- 你不是假设我会知道登录用户的id 吗?这就是所有文档推荐的方式,但它总是假设你会以某种方式知道id
    • @yorlin:你可以使用linkTo动态设置链接:docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/…
    • @CD.. 是否可以像商店一样使用链接设置动态 url,即代理:{ url:'/base_url/{id}'}?
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2011-01-18
    相关资源
    最近更新 更多