2015-10-06 32 views
0

我創建了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}' 
     }); 

    } 
}); 

回答

4

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

UPD: 作爲解釋到這一點 - ü是其屬性的對象,所以試圖綁定到ü .name將實際綁定到店鋪的名稱屬性。如果商店沒有名稱屬性,它將始終爲空。商店收到的數據放置在數據屬性中。 Items屬性包含接收數據的原始數組等等。

+1

如果你不知道答案,那麼請張貼的評論沒有如果可能,答案是。 –

+1

@ρss我很確定我的答案。 – yorlin

+0

然後請爲您的答案提供一些解釋,說明它爲什麼要起作用,它可以幫助像我這樣的非智能用戶:P並且它也會導致您的答案得到upvotes! –

2

在你的小提琴中,你使用的是商店,而它看起來只需要一條記錄。

使用links代替stores應該更好地工作,如:基於您的代碼

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

工作例如:https://fiddle.sencha.com/#fiddle/uuh

+0

當id = 2的用戶登錄時會發生什麼?如何更動態地使用鏈接? – yorlin

+0

@CD .. - 你不假設我會知道登錄用戶的id嗎?這就是所有文檔如何推薦它完成的,但它總是假定你會知道'id'以某種方式 – david

+0

@yorlin:你可以使用'linkTo'來動態設置鏈接:http://docs.sencha.com/extjs /6.0/6.0.0-classic/#!/api/Ext.app.ViewModel-method-linkTo –

相關問題