【发布时间】:2013-03-23 22:46:20
【问题描述】:
假设我有以下 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>
基本上,我如何绑定到全局而不是模型本身的东西?
【问题讨论】:
-
仅供参考 - developer.mozilla.org/en-US/docs/DOM/Option - 你知道已经有一个内置的构造函数
new Option()? -
@Ian - 是的,谢谢 - 这个类一开始并不是一个真正的选择,但已经变成了一个......可能会按照你的建议切换到内置类。
-
@gaurav - 我知道我可以将
var questionTypes = QuestionTypes.all;添加到我的模型中并以这种方式引用它,只是好奇是否有一种方法可以引用全局变量而无需这样做。谢谢。 -
@JoshM。我只是想指出已经有一个名为
Option的对象 - 所以我假设你正在覆盖它(不是最好的主意)。所以是的,要么采用它,要么改变你的名字,这样它们就不会冲突,这样你就可以继续正确地使用它。 -
@Ian - 同意。我正在使用 Typescript,它似乎不喜欢
Option类,但我会让它工作的。
标签: javascript data-binding knockout.js typescript