更改事件绑定's函数在页面加载时调用
Change event binding's function called on page load
我有一个select
,我正在将change
事件绑定到它上,因此一旦发生更改,我的函数就会启动。
问题是:当我的页面加载时,它会触发这个函数,我不希望发生这种情况。我只希望它在用户实际更改下拉列表的值时触发。
我的选择下拉列表:
<select data-bind="options: Main.Items,
optionsText: 'Name',
value: Main.SelectedItems,
optionsCaption: 'Please Select',
event: { change: function(data,event) { ItemClick(null) }}">
</select>
如果有人知道它为什么在负载下发射,以及我如何解决这个问题,我将不胜感激。
使用Knockout时,这通常是一个危险信号。使用计算的可观察性或订阅在值更改时触发逻辑。例如:
var MainViewModel = function(){
var self = this;
self.Items = [{Name: 'apple'}, {Name: 'orange'}];
self.SelectedItems = ko.observable();
function ItemClick(newValue) {
alert(ko.toJSON(newValue));
}
self.SelectedItems.subscribe(ItemClick);
}
ko.applyBindings({ Main: new MainViewModel() });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<select data-bind="options: Main.Items,
optionsText: 'Name',
value: Main.SelectedItems,
optionsCaption: 'Please Select'"></select>
请确保如上所述设置SelectedItems
,或明确设置为undefined
。也就是说,如果要使用null
进行初始化,UI将使用optionsCaption
立即再次将其设置为undefined
,从而触发订阅。
PS。您的视图建议可以选择多个项目(因为属性是复数),如果是这样,您需要selecte
上的multiple
属性,以及SelectedItems
的observableArray
和selectedOptions
绑定的组合。
PPS。您发布的代码与实际代码的行为方式不同。也就是说,在下面的代码段中,您可以看到绑定到event
的ItemClick
函数直到您第一次更改下拉菜单时才被触发。
function ItemClick(x) {
alert(x);
}
var MainViewModel = function(){
var self = this;
self.Items = [{Name: 'apple'}, {Name: 'orange'}];
self.SelectedItems = ko.observable();
}
ko.applyBindings({ Main: new MainViewModel() });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<select data-bind="options: Main.Items,
optionsText: 'Name',
value: Main.SelectedItems,
optionsCaption: 'Please Select',
event: { change: function(data,event) { ItemClick(null) }}"></select>
相关文章:
- 在调用speak之前预加载Web Speech API
- BrowserId登录请求在文档加载时被调用
- 页面加载后的Ajax调用
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 为什么我的ajax在提交用@HtmlRenderPartial加载的表单时只调用fire一次
- 使用多个依赖项加载只进行一次AJAX调用
- 如何重新加载调用部分视图的操作
- 也需要为“加载”调用脚本,而不仅仅是在“模糊”上
- 加载调用仅适用于第一个节点,不适用于叶
- 如何在不加载调用的页面的情况下调用 URL
- 页面加载调用函数上的 Angularjs
- 页面加载调用后的谷歌地图api
- Jquery加载不回答通过加载调用
- Jquery加载调用结果为空查询字符串
- ASP.Net增量页面加载调用Javascript
- 我如何从页面加载调用ajax单击事件
- 在HTML中加载/调用javascript的适当位置
- 如何停止Ajax映像加载调用新函数
- 页面加载调用javascript函数
- JSF中的页面加载调用命令按钮