如何使用KnockoutJS
創建函數,我可以調用它來對視圖模型進行一些操作?使用knockoutjs操作視圖模型
型號:
public class ViewModel
{
public int User { get; set; }
public string Address { get; set; }
public string ZipCode { get; set; }
public List<Product> Products { get; set; }
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
的Javascript:
<script type="text/javascript">
var Product = function (Id, Name) {
self = this;
self.Id = Id;
self.Name = Name;
}
function Add() {
viewModel.products.push(new Product(2, "bread"));
}
function Remove(product) {
viewModel.products.remove(product);
}
var viewModel = ko.mapping.fromJS(@Html.Raw(Json.Encode(Model)));
viewModel.products = ko.observableArray();
ko.applyBindings(viewModel);
Add();
console.log(viewModel.products().length);
var t = new Product(2, "bread");
Remove(t);
console.log(viewModel.products().length);
</script>
這裏添加這樣的作品,但function Remove(product)
不從array
取出產品。我沒有得到錯誤,console
只打印出1(在viewModel.products().length
調用中)。
那麼,如何爲KnockoutJS創建適當的功能,以便能夠在頁面上的任何位置調用它們?
嗨,如果我不使用'viewModel.products = ko.observableArray();'當使用'var mapping = ....時,我得到一個關於'push'不是'viewModel'的方法的錯誤。 '。另外,產品在'viewModel.Products'中是未定義的。 – Quoter
嗨,你看過工作小提琴嗎?你是否包括映射庫:http://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.js – hutchonoid
我也會檢查我用來對付你的淘汰賽版本。你可以拿小提琴的代碼並按原樣使用它。讓我知道你是怎麼辦的。 – hutchonoid