2015-07-05 109 views
0

我在js中編寫了一個函數,用於啓用/禁用telerik RibbonBar的元素。 當我試圖在打字稿中再次寫入時,我在調用函數「findItemByText」時出錯。findItemByText在打字稿中未定義

///enable/disable elements in the ribbonbar. example (true/false , "RadRibbonBar1", ""); 
function enableRibbonElement(enbaled_state_bool, ribbonbar_id, elements) { 
    var rb = $find(ribbonbar_id); 
    for (var i in elements) 
     rb. findItemByText (elements[i]).set_enabled(enbaled_state_bool); 
} 

回答

1

的問題是不調用一個未定義的函數(findItemByText) 但鑄造向右Telerik的元件。

首先我們必須包含一個telerik定義文件(Telerik.Web.UI.d.ts),然後我們需要投射這個元素。聲明它的時候

/** enable/disable elements in the ribbonbar. example (true/false , "RadRibbonBar1", ""); */ 
function enableRibbonElement1(enbaled_state_bool, ribbonbar_id, elements) { 
    var rb: Telerik.Web.UI.RadRibbonBar = <any> $find(ribbonbar_id); 
    for (var i in elements) 
     rb.findItemByText(elements[i]).set_enabled(enbaled_state_bool); 
} 

2.鑄造元素「任意」它工作時

1鑄造的元素: 我們能夠做到以不同的方式

function enableRibbonElement1(enbaled_state_bool, ribbonbar_id, elements) { var rb = $find(ribbonbar_id); for (var i in elements) (<any>rb).findItemByText(elements[i]).set_enabled(enbaled_state_bool); } 

3. when declaring :避免與其他類型(數字,字符串)(感謝zlumer)鑄造:

/** enable/disable elements in the ribbonbar. example (true/false , "RadRibbonBar1", ""); */ 
function enableRibbonElement1(enbaled_state_bool, ribbonbar_id, elements) { 
    var rb = <Telerik.Web.UI.RadRibbonBar>$find(ribbonbar_id); 
    for (var i in elements) 
     rb.findItemByText(elements[i]).set_enabled(enbaled_state_bool); 
} 
+0

感謝,upvoted和刪除我的意見爲過時。 – zlumer