Dynamics 365(online) V9.0 new features for developers(二:JavaScript Web 資源依賴性)

vic0228發表於2018-01-19

    本篇是9.0版本針對開發者新變化系列的第二篇,JavaScript Web 資源依賴性,初看標題可能看不出所以然來,看下web資源的介面,會看到多了一個依賴項。

其中又分為兩部分,一是web資源的依賴關係,一個是實體屬性的依賴性

    根據官方文件的原話,當web資源被載入時,它的依賴項同時會被載入,看到這句我想到的第一個應用場景也是之前專案實施過程中的一個痛點,在實體的列表頁面加按鈕,按鈕的事件繫結只能對應單個javascript檔案而無法繫結載入多個,設定如下圖

     但當我示例中的new_demo.js檔案中的function想要引用了其他js檔案中的function時是就無法做到的。現在有了web資源的依賴項就好實現了,只需要將需要引用的js檔案新增到依賴項中即可。

    列表上的按鈕呼叫new_demo.js中的TestDepend方法,而TestDepend方法中再去呼叫new_denpendcy中的ShowDenpendcy方法,ShowDenpendcy方法體很簡單,就一句alert測試下效果

 

function TestDenpend()
{
	ShowDenpendcy();
}
function ShowDenpendcy()
{
	alert('ShowDenpendcy');
}

最後來看下效果,點選按鈕能正確的執行依賴項js檔案中的ShowDenpendcy方法。

這是我首先想到的應用場景,當然場景還有很多,待後續專案中發現,而且我的示例是講到了js,當然也可以新增其他型別的依賴不限於js。

    講完了web資源的依賴,再來看看實體屬性的依賴,此處我們使用客戶中的傳真欄位來做示例

下面是兩張對比圖,一張頁面有傳真欄位,一張頁面沒有傳真欄位

    如果頁面上有這個欄位那取值自然沒問題,那如果沒有呢,只要設定了屬性的依賴,一樣可以取到值和設定值,但是如果你要getControl去獲取欄位控制元件,那肯定是null了,因為表單頁面上沒有這個控制元件

    這種用法就避免了即想給欄位取值或者賦值,又不想要欄位存在於頁面上(之前的做法是設定欄位的隱藏)。

    除了設定當前實體,還可以選擇其他,比如這的contact的mobilephone,我第一想到的是這樣是不是可以取lookup關聯欄位中的屬性欄位值了呢?而不是去寫js查詢了,結果證實我的猜測是錯誤的(從另一個角度說如果一個實體存在兩個關聯欄位也就推倒了這種猜測)。後續再探索下設定了其他實體的屬性欄位後怎麼用吧。


 

相關文章