2017-01-27 65 views
1

我正在按照this video中的步驟創建註釋部分。需要顯示目錄輸出爲全名而不是電子郵件地址

James(作者)創建了兩個模型,然後在兩者之間創建一個關係,然後創建一個表來添加/編輯註釋/註釋。

他使用一個模型以下事件:

onCreate  
record.reported_by = Session.getActiveUser().getEmail();  
record.Date = new Date(); 

,並在第二以下事件。

onCreate 
record.Tech = Session.getActiveUser().getEmail(); 
record.Date = new Date(); 

現在,如果你有一個綁定的關係的標籤,它會顯示誰創造了新項目的用戶的電子郵件地址。

所有工作都很完美。我只是想找出一種讓標籤顯示全名而不是電子郵件地址的方法。

我一直希望能夠像getFullName那樣切換getEmail,但沒有這樣的運氣。

+0

難道只是更容易更改小部件的綁定? –

回答

2

Afaik目前在App Maker中沒有內置方法來獲取當前用戶全名,但您可以通過將Directory model添加到您的應用程序中來獲取它。當你添加目錄模型,你有多種方式來滿足用戶的全名:

1將其保存到你的數據庫中創建

// onCreate 
var email = Session.getActiveUser().getEmail(); 

var directoryQuery = app.models.Directory.newQuery(); 
directoryQuery.filters.PrimaryEmail._equals = email; 
var reporter = directoryQuery.run()[0]; 

record.reported_by = email; 
record.reported_full_name = reporter.FullName; 
record.Date = new Date(); 

,然後在綁定的,而不是「reported_by」使用「reported_full_name」當記錄。

  • 優點 - 更好的性能,當你在UI渲染多個記錄
  • 在你的數據庫
  • 利弊值可以最終成爲過時

2使用計算模型,並讓你的局部模型之間的動態「虛擬關係」和目錄

  • 利弊 - 你將永遠有實際數據
  • 缺點 - 它會工作較慢,這將是難以維持和數據源上加載UI

    // widget binding 
    setFullName(widget, @datasource.item.reported_by) 
    
    // client script 
    setFullName(widget, email) { 
        google.script.run 
         .withSuccessHandler(function(fullName) { 
          widget.text = fullName; 
         }) 
         .getFullName(email); 
    } 
    
    // server script 
    function getFullName(email) { 
        var directoryQuery = app.models.Directory.newQuery(); 
        directoryQuery.filters.PrimaryEmail._equals = email; 
        var person = directoryQuery.run()[0]; 
    
        return person.FullName; 
    } 
    
    • 利弊後實施

    3查詢服務器的全名 - 你將永遠有實際數據

  • 利弊 - 標籤上UI會閃爍,由於大量請求到服務器而導致性能下降
+0

這完全工作!謝謝! (我使用示例1) –

+0

也許您還希望您的應用看起來更好,更具社交性,那麼您可以將ThumbnailPhotoUrl存儲在數據庫中,並將其綁定到Image小部件。 –

相關問題