Javascript 我升级了Knockout.js,现在我的模板坏了
在我的项目中,我将knockout.js从1.2升级到了2.1。我正在使用一些基本的模板,它们似乎被破坏了。我包括jQuery.tmpl.js和knockout-2.1.0.js。希望得到一个快速的答案Javascript 我升级了Knockout.js,现在我的模板坏了,javascript,knockout.js,Javascript,Knockout.js,在我的项目中,我将knockout.js从1.2升级到了2.1。我正在使用一些基本的模板,它们似乎被破坏了。我包括jQuery.tmpl.js和knockout-2.1.0.js。希望得到一个快速的答案 <ul data-bind="template: {name:'addressesTemplate', foreach:addresses}"></ul> <button data-bind="click: addAddress">Add Address&l
<ul data-bind="template: {name:'addressesTemplate', foreach:addresses}"></ul>
<button data-bind="click: addAddress">Add Address</button>
<button data-bind="click: save">Save Account</button>
<script id="addressesTemplate" type="text/html">
<li>
Address Type: <input data-bind="value: addressType"/><br/>
Address Line 1: <input data-bind="value: addressLine1"/><br/>
Address Line 2: <input data-bind="value: addressLine2"/><br/>
City: <input data-bind="value: city"/><br/>
State: <input data-bind="value: state"/><br/>
Country: <input data-bind="value: country"/><br/>
Zip Code: <input data-bind="value: zipCode"/><br/>
<button data-bind="click: remove">Remove</button>
</li>
</script>
<script type="text/javascript">
function addressModel(id) {
return {
id: id,
addressType: ko.observable(),
addressLine1: ko.observable(),
addressLine2: ko.observable(),
city: ko.observableArray(),
state: ko.observableArray(),
country: ko.observableArray(),
zipCode: ko.observableArray(),
remove: function () {
viewModel.addresses.remove(this);
}
};
}
var viewModel = {
id : 0,
username: ko.observable(""),
addresses: ko.observableArray([]),
addAddress: function () {
this.addresses.push(new addressModel(""));
},
save: function () {
alert(ko.toJSON(this));
$.ajax({
url: "/account/Save",
type: "post",
data: ko.toJSON(this),
contentType: "application/json",
success: function(result) {alert(result.message) },
failure: function(result) { alert('fail') }
});
}
};
ko.applyBindings(viewModel);
</script>
添加地址
储蓄账户
地址类型:
地址行1:
地址行2:
城市:
状态:
国家:
邮政编码:
去除
函数地址模型(id){
返回{
id:id,
addressType:ko.observable(),
addressLine1:ko.observable(),
addressLine2:ko.observable(),
城市:ko.array(),
状态:ko.observearray(),
国家:韩国,
zipCode:ko.observableArray(),
删除:函数(){
viewModel.addresses.remove(此);
}
};
}
var viewModel={
id:0,
用户名:ko.observable(“”),
地址:ko.observableArray([]),
addAddress:函数(){
this.addresses.push(新的addressModel(“”);
},
保存:函数(){
警报(ko.toJSON(this));
$.ajax({
url:“/account/Save”,
类型:“post”,
数据:ko.toJSON(这个),
contentType:“应用程序/json”,
成功:函数(result){alert(result.message)},
失败:函数(结果){alert('fail')}
});
}
};
应用绑定(视图模型);
既然删除了jquery.tmpl,我就添加这个作为答案。但是为了增加附加值,这里是您的viewModel,它将删除功能向上移动到viewModel(和中)
和新的按钮
绑定:
<button data-bind="click: $parent.removeAddress">Remove</button>
删除
既然删除了jquery.tmpl,我就添加这个作为答案。但是为了增加附加值,这里是您的viewModel,它将删除功能向上移动到viewModel(和中)
和新的按钮
绑定:
<button data-bind="click: $parent.removeAddress">Remove</button>
删除
对我来说很好:。值得注意的是,您的addressModel具有指向其父级的remove函数(并且硬编码)是不好的。移除功能应位于viewmodel上。如果您需要更多关于原因或方式的解释,请告诉我。尝试去掉jQuery.tmpl.js,它不再使用。如果您没有使用jQuery模板的功能(您的示例没有),那么您可以删除它,如@Tyrsius所述。问题可能是您的jQuery模板版本太旧。您应该会在控制台中看到一条消息,指出这一点。以下是指向一个可用版本的链接:。删除依赖项是最好的选择。删除jQuery.tmpl.js做到了这一点。非常感谢!对我来说很好。值得注意的是,您的addressModel具有指向其父级的remove函数(并且硬编码)是不好的。移除功能应位于viewmodel上。如果您需要更多关于原因或方式的解释,请告诉我。尝试去掉jQuery.tmpl.js,它不再使用。如果您没有使用jQuery模板的功能(您的示例没有),那么您可以删除它,如@Tyrsius所述。问题可能是您的jQuery模板版本太旧。您应该会在控制台中看到一条消息,指出这一点。以下是指向一个可用版本的链接:。删除依赖项是最好的选择。删除jQuery.tmpl.js做到了这一点。非常感谢!