2013-02-25 1 views
0

엽차 템플릿의 모델 함수를 호출하는 방법 :나는 클라이언트 모델로 정의

그리드에서
Ext.define('app.model.Client', { 
    extend: 'Ext.data.Model', 
    alias: 'model.clientmodel', 
    fields: [ 
     { 
      name: 'Firstname', 
      type: 'string' 
     }, 
     { 
      name: 'Lastname', 
      type: 'string' 
     }, 
     { 
      name: 'Title', 
      type: 'string' 
     } 
    ], 
    GetFullName: function(withTitle) { 
     var fullName = [this.get('Firstname'), this.get('Lastname')].join(' '); 

     if(withTitle){ 
      return [this.get('Title'), fullName].join(' '); 
     } 

     return fullName; 
    } 
}); 

, 나는이 "이름"템플릿 열을 갖고 싶어를 -를 호출하는 방법은 무엇입니까 모델에 GetFullName 메서드가 정의되어 있습니까?

감사

답변

1

내가 가진 해결책은 클라이언트 데이터에 대한 참조를 가져 와서 거기에 GetFullName을 호출하는 템플릿 함수를 사용하는 것이 었습니다.

나는 이것을 재사용 가능한 클래스로 바꿀 수 있지만, 그리드에 대한 참조를 얻는 방법에 대해서는 확신하지 못한다. (항상 MyGrid에 있지는 않을 것이기 때문에).

{ 
    xtype: 'templatecolumn', 
    dataIndex: 'Lastname', 
    text: 'Name', 
    tpl: new Ext.XTemplate('{[this.getFullName(values.ID)]}', 
    { 
     getFullName: function (clientId) { 
      var myGrid = Ext.getCmp('MyGrid'), 
      myStore = myGrid.getStore(), 
      client = myStore.getById(clientId); 

      return client.GetFullName(true); 
     } 
    } 
    ) 
} 
+1

상점이 없으면 작동하지 않지만 매장이있는 것 같습니다. 그렇지 않으면 모델 인스턴스에서 함수를 호출하십시오. 뷰를 사용하는 경우 myGrid를 뷰와 바꾸고 구성 요소 쿼리를 변경하십시오. –

1

당신은 코드를 아래와 같이 변환 할 수 있습니다

Ext.define('app.model.Client', { 
extend: 'Ext.data.Model', 
alias: 'model.clientmodel', 
fields: [ 
    { 
     name: 'Firstname', 
     type: 'string' 
    }, 
    { 
     name: 'Lastname', 
     type: 'string' 
    }, 
    { 
     name: 'Title', 
     type: 'string' 
    }, 
    { 
     name: 'FullName', 
     type: 'string', 
     convert: function(value,record) { 
      var fullName = [record.get('Firstname'), record.get('Lastname')].join(' '); 

      if(withTitle){ 
       return [record.get('Title'), fullName].join(' '); 
      } 

      return fullName; 
     } 
    } 

] 

});

이제 gridDataIndex에서 FullName 열을 사용할 수 있습니다.

+0

감사합니다. withTitle 부분을 제외하고는 효과가있었습니다.이 방법으로는 불가능합니다. – Brett

+0

아니요, 여기서 제목과 함께 매개 변수를 전달할 수 없습니다. 당신은 다른 접근법, 다른 대답과 같은 것을 사용해야 할 것입니다. –

관련 문제