0

我正在尝试使用一种sliderfield.drag()方法解析 JSON 文件并显示不同的值,但由于某种原因它不起作用。我什至没有得到 console.log 的值。什么不见​​了?

应用程序/模型/议程.json

{
 "agenda":
    [
        {
            "id": 1,
            "name": "Ed Spencer",
            "email": "ed@sencha.com"
        },
        {
            "id": 2,
            "name": "Abe Elias",
            "email": "abe@sencha.com"
        }
    ]
}

应用程序/模型/Contact.js

Ext.define('Test.model.Contact', {
    extend: 'Ext.data.Model',
    config: {
        fields: ['id', 'name', 'email'],
        autoLoad: true,
        proxy: {
            type: 'ajax',
            url : 'agenda.json',
            reader: {
                type: 'json',
                rootProperty: 'agenda'
            }
        }
    }
});

应用程序/控制器/Settings.js

Ext.define('Test.controller.Settings', {
    extend: 'Ext.app.Controller',
    requires: ['Test.model.Agenda'], 
    config: {
        refs: {
        },
        control: {
            'mainview sliderfield[action=updateSurface]': {
                drag: 'updateSurface' 
            },
        }
    },
    updateSurface: function(me){
        var value = me.get('value');

        var yields = Ext.create('Test.model.Contact');
        console.log(yields);
        yields.load({
            success: function(){
                console.log(yields.getName());
            }        
        });    
    }
});
4

2 回答 2

1

我实际上使用 JavaScript 而不是 SenchaTouch 模型解决了这个问题。

应用程序/监听器/Agenda.js

Ext.define('Test.listener.Agenda', {

    parse: function(){

        var request = new XMLHttpRequest();
        request.open("GET", "resources/json/agenda.json", false);

        request.send(null);
        var data = JSON.parse(request.responseText);

        return data.agenda[0].name;
    },
});

应用程序/控制器/Settings.js

Ext.define('Test.controller.Settings', {
    extend: 'Ext.app.Controller',
    requires: ['Test.listener.Agenda'], 
    config: {
        refs: {
        },
        control: {
            'mainview sliderfield[action=updateSurface]': {
                drag: 'updateSurface' 
            },
        }
    },
    updateSurface: function(me){
        var agenda = new Test.listener.Agenda();
        console.log(agenda);               
    }
});
于 2013-08-05T09:29:11.540 回答
0

您的代码中有一个错字:

yield.load({...});

yield是 JavaScript 中的保留字。你可能是想说

yields.load({...});
于 2013-08-02T15:58:00.797 回答