2016-12-14 101 views
1

中的特定事件沒關係,所以我正在開發一個商店插件,我需要將disabled輸入字段更改爲已在XTemplate中定義的readonly字段。ExtJS XTemplate替換字符串

我一直在試圖找到一種方法來使這項工作,但我不能拿出任何東西。

此代碼是一個精簡版,有多個輸入字段,其中一些也被禁用,但這是最後一次發生。 任何提示表示讚賞! :)

/** 
* Some function... 
*/ 
createSomeFunction: function() { 
    var me = this; 
    return new Ext.XTemplate(
     '<tpl for=".">', 
     //stripped this down 
     '<p>', 
     '<strong>'+me.snippets.mediaInfo.adress+'</strong>', 
     '<input type="text" disabled="disabled" value="{path}" />', 
     '</p>', 
     '</div>', 
     '</div>', 
     '</tpl>', 
     { 
      //formatting functions 
      someFormattingFunctions: function(value) { 
       //... 
      } 
     } 
    ) 
} 
+0

https://developer.mozilla.org/en/docs/Web/HTML/Element/input 看到關於readOnly的一點。 –

+0

我想用readonly =「readonly」替換disabled =「disabled」。 這段代碼來自商店,所以我不能直接編輯它,我需要覆蓋它,但只替換這個位而不是整個模板。 –

回答

0

您需要爲原始Shopware視圖類編寫替代以自定義模板。

在你的情況是這樣的:

Ext.define('MyApp.ShopwareOverride', { 
    override: 'Shopware.view.Masterdata', 

    createSomeFunction: function() { 
     var tpl = this.callParent(arguments); 
     //manipulate response of the original function here ... 
    } 
}); 

既然我們現在已經進入到模板,我們可以操縱的HTML。在這裏你可以調用set函數來替換模板。將第二個參數作爲true傳遞是很重要的。這再次編譯模板。
我們還可以訪問可用作字符串的原始模板(在tpl['html']中)。但要小心,這部分沒有正式記錄。

結果,我們可以自定義模板,如下所示在不改變原有代碼: https://fiddle.sencha.com/#view/editor&fiddle/21e7