2013-02-14 71 views
2

我想創建一個自定義佔位符控件。下面是代碼摘錄:綁定資源數據到自定義winjs控件

(function() { 
    var Placeholder = WinJS.Class.define(function ctor(elem, options) { 
     this.element = elem || document.createElement('div'); 
     this.element.winControl = this; 

     WinJS.UI.setOptions(this, options); 

     this.init(); 
    }, 
    { 
     element: { 
      get: function() { 
       return this._element; 
      }, 
      set: function (value) { 
       this._element = value; 
      } 
     }, 

     placeholder: { 
      get: function() { 
       return this._placeholder; 
      }, 
      set: function (value) { 
       this._placeholder = value; 

       this._placeholderElement.textContent = value; 
      } 
     }, 

     placeholderClass: { 
      get: function() { 
       return this._placeholderClass; 
      }, 
      set: function (value) { 
       this._placeholderClass = value; 

       this._placeholderElement.classList.add(value); 
      } 
     }, 

     _placeholderElement: null, 

     init: function() { 
      this._addPlaceholder(); 
     }, 

     _addPlaceholder: function() { 
      /* Code to add placeholder. */ 
     } 
    }); 

    WinJS.Namespace.define("ControlX", { Placeholder: Placeholder }); 
})(); 

我想以這種方式來使用此控件的HTML:

<div data-win-control="ControlX.Placeholder" data-win-res="{winControl:{placeholder:'resHeight'}}"><input type="text"/></div> 

當我使用data-win-res屬性設置佔位符值,我得到一個異常:

「無法設置的未定義或空引用屬性 '佔位符'」

根據這篇文章: How to localize WinJS controls我們也可以將資源字符串綁定到winControl屬性。

我在做什麼錯?

是否有任何其他方式綁定資源字符串到winControl屬性?

+0

您是否在頁面控制中進行控制?如果是這樣,你是否在PageControls的ready函數中調用了WinJS.Resources.processAll(element)?我似乎能夠得到這個工作,但我不能說出我們兩個努力之間可能會有什麼不同。 – 2013-02-19 02:15:31

回答

1

我正在開發Windows 8的應用程序在C#& XAML,所以不知道是什麼確切的解決方案,但我認爲這個答覆可能的工作:

我建議,而不是創建內部類和定義只是方法參數,每種方法和類都應該被分開,並在一種方法中與該全新定製WinJS控件的適當名稱相結合。 在給出該控件的名稱後,您應該通過DIV標記中的名稱來調用該控件。

我不是很強大,並且用它的代碼進行實踐,最好不要提供代碼,對此感到抱歉。但我相信,通過這個名字給人的名字,並要求將有助於 所有最好的...

(對不起,如果你認爲這是不是給你答案。但我認爲這可能幫助)