将选择选项绑定到全局变量/数组?

时间:2013-04-02 15:03:14

标签: javascript data-binding knockout.js typescript

假设我有以下Javascript:

var Option = (function ()
{
        function Option(value, text)
        {
            this.value = value;
            this.text = text;
        }

        return Option;
})();

var QuestionTypes = (function ()
{
    QuestionTypes.chooseOne = new Option("ChooseOne", "Choose One");
    QuestionTypes.chooseMany = new Option("ChooseMany", "Choose Many");
    QuestionTypes.text = new Option("Text", "Text");
    QuestionTypes.all = function ()
    {
        return
        [
            QuestionTypes.chooseOne, 
            QuestionTypes.chooseMany, 
            QuestionTypes.text
        ];
    };

    return QuestionTypes;
})();

这个HTML:

<select data-bind="value: type, options: QuestionTypes.all, optionsValue: value, optionsText: text" />

因此select绑定到我的“静态”变量QuestionTypes。我希望结果select看起来像这样:

<select data-bind="value: type, options: QuestionTypes.all, optionsValue: value, optionsText: text">
    <option value="ChooseOne">Choose One</option>
    <option value="ChooseMany">Choose Many</option>
    <option value="Text">Text</option>
</select>

基本上,我如何绑定到全局而不是模型本身的东西?

1 个答案:

答案 0 :(得分:5)

你可以很好地绑定到全局变量。它们可以像其他任何地方一样在绑定中使用。

您的示例中的问题是optionsValueoptionsText需要是字符串。

options: QuestionTypes.all, optionsValue: 'value', optionsText: 'text'