2

目前我們正在從SP2007遷移到SP2013的工作地點。因此,客戶端渲染/ JSLink,JSOM等都是我們可用的所有新技術,但是在搜索這些文檔時,我找不到任何通常可用的MSDN標準問題微軟參考資料。它們存在嗎?Sharepoint 2013 JSOM/Javascript API文檔?

使用Google搜索我的手指我似乎找不到任何有用或深入的東西。是的,有幾個MSDN文章,其中包含一些示例和大量博客文章,但理想情況下,我想自己閱讀API參考文檔,而不是必須通過我想要編寫的代碼來Google我的方式。

搜索打開了這些資源:

  • 爲SharePoint 2013的JavaScript API參考 - 使用JavaScript庫代碼link
  • 完成基本操作在SharePoint 2013 - link

但是第一鏈接在大多數情況下可怕,不完整和空白。第二個鏈接給出了一些示例,但如果我試圖查看由SPClientTemplates.Utility.GetFormContextForCurrentField(ctx)返回的上下文對象支持哪些屬性和方法(無需調試瀏覽器中的所有內容),則這些方法並沒有多大用處。

這似乎有點奇怪,沒有任何真實的文檔,我錯過了什麼?

在此先感謝您提供的任何燈光。

+0

您是否正在尋找? [SP命名空間(sp.js)](https://msdn.microsoft.com/EN-US/library/office/jj246996.aspx)它也可以從[Stack Overflow文檔](http:// stackoverflow。 com/documentation/sharepoint/1316/working-with-javascript-client-object-model-jsom#t = 2016110916390368461&a = remarks),例如它是... – Thriggle

+0

不是專指「SP命名空間(sp.js)」您鏈接到的文檔是我發佈的第一個鏈接的一部分。該文件是好的,但它遠未完成。例如,使用JS鏈接文件進行客戶端渲染時,MSDN教程都使用可用客戶端的「SPClientTemplates」對象,但在任何地方都沒有記錄。我開始認爲我發佈的第一個鏈接是MS生產的唯一文檔,如果它是真的很差的話。 – ArmouR

+0

我認爲你的困惑源自JSOM與[客戶端渲染](https://msdn.microsoft.com/en-us/library/office/jj220061.aspx)的無關特性的混合。 – Thriggle

回答

2

不,我不認爲在這篇文章的時候SPClientTemplates模塊有一個正式的類參考。也就是說,客戶端渲染看起來並不需要對該模塊有深入的瞭解,而文檔將專注於構建參數並調用SPClientTemplates.TemplateManager.RegisterTemplateOverrides方法。

傳遞給RegisterTemplateOverrides的對象的接口具有以下屬性,所有這些是可選的:

  • BaseViewId:該SPView.BaseViewID的量,模板應當應用;如果沒有定義,它們將適用於所有視圖。
  • ListTemplateType:應該爲其應用模板的SPList.BaseTemplate類型。如果未定義,則模板將應用於所有列表。
  • OnPostRender:將呈現的HTML插入到DOM後執行的函數或函數數組。
  • OnPreRender:在渲染開始之前要執行的函數或函數數組。
  • 模板TemplateOverrides對象
  • 的陣列ViewStyle:針對模板應當施加視圖式樣的SPView.StyleID。如果未定義,模板將僅應用於默認視圖樣式。

TemplateOverrides對象本身具有另外的可選屬性:

  • :(功能或字符串)
  • 字段:與命名屬性的字段模板地圖對象;每個屬性名稱應與列表中某個字段的內部名稱匹配,其值應爲具有四個可選屬性的對象,每個屬性都是字符串或返回要顯示的HTML字符串的函數:
    • 視圖:(功能或字符串)
    • EditForm:(功能或字符串)
    • DisplayForm:(功能或字符串)
    • NewForm:(功能或字符串)
  • 頁腳:(本功能離子或字符串)
  • 組:(功能或字符串)
  • 部首:(功能或字符串)
  • 項目:(功能或字符串)
  • 查看:(功能或字符串)

JavaScript有弱打字,所以你可以創建一個對象,只需通過手動指定它的原型rties。一個例子對象會是這個樣子:

var options = { 
    OnPreRender: /* function or array of functions */, 
    Templates: { 
     View: /* function or string */, 
     Body: /* function or string */, 
     Header: /* function or string */, 
     Footer: /* function or string */, 
     Group: /* function or string */, 
     Item: /* function or string */, 
      Fields: { 
       'Field1InternalName': { 
        View: /* function or string */, 
        EditForm: /* function or string */, 
        DisplayForm: /* function or string */, 
        NewForm: /* function or string */ 
       }, 
       'Field2InternalName': { 
        View: /* function or string */, 
     EditForm: /* function or string */, 
     DisplayForm: /* function or string */, 
     NewForm: /* function or string */ 
       }, 
      } 
     }, 
    OnPostRender: /* function or array of functions */ 
}; 

SPClientTemplates.TemplateManager.RegisterTemplateOverrides(options) 

凡接口可以接受一個函數或字符串,可以挖掘到上下文對象從列表中獲取值。如果使用函數,則上下文對象將作爲參數提供。在字符串中,您可以使用特殊令牌<#= ... #>來訪問ctx對象。

例如,

SPClientTemplates.TemplateManager.RegisterTemplateOverrides({ 
    Templates: { 
     Footer: "This is the footer of <#= ctx.ListTitle #>" 
    } 
}); 

SPClientTemplates.TemplateManager.RegisterTemplateOverrides({ 
    Templates: { 
     Header: function(ctx) { 
      return "This is the header of " + ctx.ListTitle; 
     } 
    } 
}); 

下面是我對這個答案所引用的資源:

+0

感謝您花時間打出一些示例,我會仔細查看您引用的鏈接。我已經將它標記爲正確的答案,因爲您已確認沒有Microsoft的文檔。再次感謝 – ArmouR

相關問題