我无法获取绑定数据绑定的值。当我尝试读取值时,它总是未定义的。
我在这里设置了一个小提琴:
http://jsfiddle.net/tonymaloney1971/2qjhb5pw/5/
我想可能问题可能在于我设置淘汰赛绑定的方式:
$(document).ready(function () {
var data = [{ PostCodeStart: "", PostCodeEnd: "", Mileage: "", Notes: "" }];
add: function () {
//this part is not working this.PostCodeStart() === ""
alert("How do I get the value of PostCodeStart");
if (this.PostCodeStart() === "" || this.PostCodeEnd() === "" || this.Mileage() === "") {
alert("empty field");
}
else
this.journeyList.push({ PostCodeStart: this.PostCodeStart(), PostCodeEnd: this.PostCodeEnd(), Mileage: this.Mileage(), Notes: this.Notes() });
},
另外,在我的小提琴中你会注意到每次添加新行时都会添加
由于
答案 0 :(得分:1)
我做了一个修改过的小提琴,它可以将数据输入你的添加和删除功能。作为一般规则,您不会使用this
来进行淘汰赛。作为旁注,道格拉斯·克罗克福德(Douglas Crockford)在他关于class-free OOP的讨论中从不使用this
作为公平的理由。
以下是相关的HTML:
<button class="btn-success img-rounded" data-bind="click:$root.add">
<span class="glyphicon glyphicon-plus-sign" style="text-align:right"></span>
</button>
<button class="btn-danger img-rounded" data-bind="click:$root.remove">
<span class="glyphicon glyphicon-remove"></span>
</button>
viewModel:
var viewModel = {
journeyList: ko.observableArray(data),
add: function (data) {
if (data.PostCodeStart === "" || data.PostCodeEnd === "" || data.Mileage === "") {
alert("empty field");
}
else {
viewModel.journeyList.push({ PostCodeStart: data.PostCodeStart, PostCodeEnd: data.PostCodeEnd, Mileage: data.Mileage, Notes: data.Notes });
}
},
remove: function (data) {
viewModel.journeyList.remove(data);
}
};
更新:为列表添加样式以消除项目符号。
<ul data-bind="foreach: journeyList" style="list-style-type:none">