2013-01-22 67 views
2

我創建了一個模型,其中包含一個代理來加載單個記錄,並且它不包含參數。我不想使用商店,因爲我永遠不會有更多的記錄。我創建了一個Model的實例,但無法弄清楚如何告訴它從服務器調用和加載記錄。這是我能找到的唯一例子,但我沒有身份證可以通過。沒有存儲的模型

User.load(123, { 
success: function(user) { 
    console.log("Loaded user 123: " + user.get('name')); 
} 
}); 

此外,我正在和阿賈克斯打電話,而不是休息電話,以防萬一。

回答

1

load(id, [config])是靜態的,將返回爲您提供一個新的記錄實例。它使用通過setProxy(proxy)(也是靜態的)設置的代理。默認情況下,它將發送帶有參數id: 123的讀取請求。靜態方法允許您在可選的配置對象中設置一些默認回調。需要這些回調來獲取已加載記錄的實例(或錯誤)。

它是如何工作

// create a Model class 
Ext.define('MyApp.User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id', type: 'int'}, 
     {name: 'name', type: 'string'} 
    ] 
}); 

// apply a proxy instance 
MyApp.User.setProxy(/*YourAjaxProxy*/); 

// prepare a handler 
var cb = function(model, op) { 
    // log the new model instance 
    console.log(model); 
}; 

// get a instance 
MyApp.User.load(123, { 
    scope: this, // should be the scope of the callback (cb) 
    success: cb 
}); 

不是你需要什麼?只是評論...

+0

謝謝我會試一試,讓你知道。 – codemonkeyww

+0

這樣做,它似乎只工作的問題是,它似乎並沒有註冊與Ext.ModelManager。我需要這樣才能訪問應用程序中的其他位置。 – codemonkeyww

+0

@theboulderer我想你對'Ext.ModelManager'有一個誤解。其他與Ext.StoreManager類似,ModelManager存儲模型配置而不是實例。與StoreManager相反,您不能使用它在整個應用程序範圍內接收ModelInstance。爲此,您需要編寫自己的Manager類或使用簡化的方法,方法是將類型爲MixedCollection的屬性添加到Ext.app.Application(fe ModelMgr)中,註冊appProperty(fe appProperty:'Instance',appName:'App ')。您無法調用App.Instance.ModelMgr.get(User')。在回調中添加它們 – sra

0

只需創建一個Ajax請求並將結果存儲在一個變量中。

Ext.Ajax.request({ 
        url: '/data/get', 
        method: 'GET', 
        params: { 
         requestID: 'XXXX', 
         connName: 'yyyy' 
        }, 
        success: function (responseData) { 
         var countResult = Ext.decode(responseData.responseText);      } 
       });