2

我正在尝试创建一个自定义占位符控件。这是代码摘录:

(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属性设置占位符值时,出现异常:

“无法设置未定义或空引用的属性‘占位符’”

根据这篇文章: 如何本地化 WinJS 控件,我们也可以将资源字符串绑定到 winControl 属性。

我究竟做错了什么?

有没有其他方法可以将资源字符串绑定到 winControl 属性?

4

1 回答 1

1

我正在用 C# 和 XAML 开发 Windows 8 应用程序,所以不知道确切的解决方案是什么,但我认为这个回复可能有效:

我建议,与其只在参数中创建内部类和定义方法,不如将每个方法和类分开并组合在一个方法中,并为该全新的自定义 WinJS 控件赋予适当的名称。在给出该控件的名称后,您应该通过它在 DIV 标记中的名称来调用它。

我不是很强大并且用它的代码练习过,最好不要提供代码,对不起。但我敢肯定,通过给出名字并通过该名字呼唤将有助于一切顺利......

(如果您认为这没有给出答案,请原谅。但我认为这可能会有所帮助)

于 2013-02-20T03:58:58.650 回答