在我的应用程序中,我试图将引导程序和淘汰赛整合到MVC4中。我有两个下拉控件,用户可以从中选择一个项目,然后使用jQuery填充旁边的文本框。当我使用ViewBag和@foreach循环时,这种方法没有问题,但当我尝试使用knockout observables时,我遇到了问题。数据绑定问题与淘汰赛3
我能够看到我的ViewModel中的数据显示在下拉控件中,但它不会在文本框中更新该值。是否有我应该使用的特殊的数据绑定属性?
一些代码...
<div class="container">
<div class="col-sm-7 well">
<form class="form-inline" action="#" method="get">
<div class="input-group col-sm-8">
<input class="form-control" value="" placeholder="Work Section" name="q" type="text">
<div class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Select <span class="caret"></span></button>
<ul class="dropdown-menu">
<li data-bind="foreach: Names">
<a href="#" data-bind="text: Name, value: Name"></a>
</li>
</ul>
<input name="category" class="category" type="hidden">
</div>
</div>
<div class="input-group col-sm-8">
<input class="form-control item" value="" placeholder="Select a Color" name="color" type="text">
<div class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle item" data-toggle="dropdown">Select <span class="caret"></span></button>
<ul class="dropdown-menu">
@foreach (var item in ViewBag.Colors)
{
<li>
<a href="#">@item</a>
</li>
}
</ul>
<input name="category" class="category" type="hidden">
</div>
</div>
的问题是该姓名的foreach因为颜色是工作的罚款。
我正在使用它来找到页面上的控件,并将选定的项目和地方,在输入控件...我已经验证,现在只适用于颜色下拉菜单。
$(function() {
$(".dropdown-menu li a").click(function() {
$(this).parents(".input-group").find('.form-control').text($(this).text());
$(this).parents(".input-group").find('.form-control').val($(this).text());
});
});
我已经尝试了两种方法,无济于事。让我们先从第一个响应....
我放在我的标签下面的页面
$(function ViewModel() {
alert('Here'); // To test if the code generating the model is executed
this.Names = [{ name: "Person 1", name: "Person 2" }];
this.selectedName = ko.observable();
this.clickName = function (name) { this.selectedName = name; }
});
下一页的顶部,我把一个新的我的页面的顶部:
<p>Current selection is <span data-bind="text: selectedName"></span></p>
最后,我把这个代码在引导下拉菜单:
<ul class="dropdown-menu" data-bind="foreach: Names">
<li class="dropdown">
<a href="#" data-bind="text: Name, value: Name, click: clickName(Name)"></a>
</li>
</ul>
下拉是空的DIV从未g^ets已更新。
OK,取我创建视图模型和点击后整合:函数(){$ root.Name(名称);}我现在可以看到我的价值作为更新我希望。
这里是我的视图模型代码
$(document).ready(function() {
function ViewModel() {
var self = this;
self.Name = ko.observable("");
var Names = {
Name: self.Name
};
self.Name = ko.observable();
self.Names = ko.observableArray([{ Name: "Brian" }, { Name: "Jesse" }, {Name: "James"}]);
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
});
我试过上面的方法并修改了上面的代码,请看看。 – user2146538