Tôi đang tìm cách tốt nhất để khởi tạo mảng có thể quan sát được từ một số dữ liệu máy chủ (ViewBag), và tôi muốn nội dung của mảng là loại javascript đã xác định. Nếu không có yêu cầu của các loại JS Tôi chỉ có thể sử dụng:Knockout JS khởi tạo mảng quan sát được từ dữ liệu máy chủ bằng cách sử dụng một loại javascript
materialVarieties: ko.observableArray(@Html.Raw(Json.Encode(ViewBag.Materials)))
nhưng tôi cũng có một loại nguyên liệu JS mà tôi muốn sử dụng để tôi có thể có một số đặc tính thêm ViewModel cụ thể và chức năng tức là:
var material = function(id, name) {
this.id = id;
this.name = name;
this.selected = ko.observable(false);
this.select = function()
{
jQuery.each(processViewModel.materials(), function(index, item)
{
item.selected(false);
});
this.selected(true);
}
}
và sau đó khởi tạo yêu cầu trở thành:
materialVarieties: ko.observableArray([new material(1, "Apricot"), .....
Hiện nay tôi xây dựng một chuỗi từ các dữ liệu ViewBag và sau đó việc này là như initializer như thế này:
@{ var items = string.Join(",",
((IEnumerable<MaterialVariety>) ViewBag.Materials)
.Select(m => string.Format("new material({0}, {1})",
Json.Encode(m.Id), Json.Encode(m.Name)))); }
var processViewModel = {
material: ko.observableArray([@Html.Raw(items)])
Nhưng tôi tự hỏi có cách nào sạch hơn bit string.Join
không. Tôi có thể bọc nó trong một người trợ giúp. Bạn làm nghề gì?
Tại sao không tạo phương thức mở rộng HtmlHelper? Tham số chung và trả về kết quả được mã hóa. – Anuj
@Anuj Yeah thats những gì tôi đã suy nghĩ ('Tôi có thể quấn nó lên trong một người trợ giúp'), nó cũng sẽ phải có một chuỗi đại diện cho các loại JS. Sự cố xảy ra khi làm việc các thuộc tính để sử dụng trong hàm tạo JS (và thứ tự bắt buộc). Tôi có thể phản ánh đối số chung để có được các thuộc tính, nhưng tôi đã hy vọng sử dụng các mô hình phía máy chủ của tôi (không muốn một bộ máy chủ phía máy chủ khác) và chúng có các thuộc tính khác mà tôi không cần trong JS của mình. Và điều đó vẫn để lại cho tôi vấn đề về trình tự constructor arg ..... trừ khi tôi đang thiếu cái gì đó? –