Сложность с загрузкой csv в таблицу jockout js (ASP MVC)
Я работал с этими двумя учебниками, но мне сложно слить их вместе, чтобы загрузить CSV для заполнения таблицы. Скорее всего, это мое отсутствие понимания модели взгляда.
Здесь учебник по редактированию таблицы нокаута js с сайта нокаута js: KnockoutJS: редактируемая таблица сетки
И вот учебник по загрузке csv, на который я ссылаюсь:
Вот код javascript, над которым я работал, чтобы загрузить CSV в таблицу. Я продолжаю получать "Ошибка выполнения JavaScript: не удается получить свойство" push "неопределенной или нулевой ссылки" - я отметил в комментариях проблему. Как вы можете видеть, у меня проблемы с моделью просмотра.
<script>
var UserModel = function (users) {
var self = this;
self.users = ko.observableArray(users);
self.addUser = function () {
self.users.push({
id: "",
firstName: "",
lastName: ""
});
};
self.removeUser = function (user) {
self.users.remove(user);
};
self.save = function (form) {
sendData = ko.toJSON(self.users);
$.ajax({
url: '/Users/CreateMultiple',
contentType: 'application/json',
async: true,
type: 'POST',
dataType: 'json',
data: sendData,
error: function (jqXHR, textStatus, errorThrown) {
console.log("FAIL: " + errorThrown);
},
success: function (data, textStatus, jqXHR) {
console.log("SUCCESS");
}
});
};
};
var viewModel = new UserModel([
{ id: "", firstName: "", lastName: "" }
]);
ko.applyBindings(viewModel);
// Activate jQuery Validation
$("form").validate({ submitHandler: viewModel.save });
/////
/////Upload CSV
/////
$('#lnkUpload').click(function () {
var FileToRead = document.getElementById('UserFile');
if (FileToRead.files.length > 0) {
var reader = new FileReader();
reader.onload = Load_CSVData;
reader.readAsText(FileToRead.files.item(0));
}
});
function Load_CSVData(e) {
CSVLines = e.target.result.split(/\r\n|\n/);
$.each(CSVLines, function (i, item) {
var element = item.split(",");
var csvID = (element[0] == undefined) ? "" : element[0].trim();
var csvFirstName = (element[1] == undefined) ? "" : element[1].trim();
var csvLastName = (element[2] == undefined) ? "" : element[2].trim();
UserModel.users.push(new UserModel()//here my problem
.id(csvID)
.firstName(csvFirstName)
.lastName(csvLastName)
)
});
}
</script>
Я смог идентифицировать полностью квалифицированный для наблюдаемого массива, который, в свою очередь, заставил его работать:
function Load_CSVData(e) {
CSVLines = e.target.result.split(/\r\n|\n/);
$.each(CSVLines, function (i, item) {
var element = item.split(",");
var csvID = (element[0] == undefined) ? "" : element[0].trim();
var csvFirstName = (element[1] == undefined) ? "" : element[1].trim();
var csvLastName = (element[2] == undefined) ? "" : element[2].trim();
viewModel.users.push({
id: csvID,
firstName: csvFirstName,
lastName: csvLastName
});
}
- Вопросы
- Knockout.js
- Сложность с загрузкой csv в таблицу jockout js (ASP MVC)