当我加载页面时,我找到了repos/svn/db/min-unpacked-rev
。我使用knockout data-bind来获取值
<select>
现在我正在使用<select data-bind="attr: { id: 'input-' + id(), required: !allowBlank },
options: valuesArray,
optionsText: 'description',
optionsValue: 'itemValue',
optionsCaption: 'Select One...',
value: value,
enable: isEnabled,
event: { focus: $parent.getOptions}"
class="form-control" />
事件,因为我似乎无法掌握行为类似于focus
的事件...
我的问题是2:
onReady
?最好在用户互动之前...... $parent.getOptions
总是有值,我该如何设置?我想我必须w8让value
返回......或者我可以强迫&#34;它?!?是的,他们关键我计划强制将在上面提到的电话中使用。答案 0 :(得分:0)
您正尝试在给定事件中填充您的选择选项。在淘汰赛中,这是通过改变观察者的价值来实现的,淘汰赛会照顾其余部分。您可以将此事件绑定到一个函数,并将内部绑定到此函数,您可以调用$ parent.getOptions逻辑。这是一个例子
var exampleVM = function () {
var self = this;
self.valuesArray = ko.observableArray([]);
self.value = ko.observable();
self.getOptions = function () {
var responseFromTheServer;
//Make ajax calls in here to get the values and format those to
//an array in the form [{ description: ..., itemValue: ... }]
self.valuesArray(responseFromTheServer);
// In here knockout will update the select in the html with your options
};
self.isEnable = ko.observable(true);
// The rest of your viewmodel ....
}
别忘了调用apply bindings。然后html看起来像
<select data-bind="attr: { id: 'input-' + id(), required: !allowBlank },
options: valuesArray,
optionsText: 'description',
optionsValue: 'itemValue',
optionsCaption: 'Select One...',
value: value,
enable: isEnabled,
event: { focus: getOptions}"
class="form-control" />
调用$ parent仅在viewmodel内部或foreach绑定内部具有viewmodel时使用。在你的情况下,所有东西都在同一个viewmodel中,所以在调用$ parent时没有意义。 如果你想尽快触发它,你应该在你的viewmodel声明的末尾调用self.getOptions。
var exampleVm = function () {
var self = this;
........
//This will execute as soon the viewmodel is created.
//Remember getOptions is just a plain javascript function
self.getOptions();
}
要设置一个值,首先需要填充选项,然后使用相关的observable进行设置。
self.value(myNewValue);
如果您在选择中没有任何选项,则Knockout将无效,因此您必须在设置值后首先填充选项。
<强> {编辑} 强>
我忘了提及你是否从一开始就加载你的选项,你不再需要焦点事件了。删除此项或在焦点上再次触发对服务器的调用。