Сложность с загрузкой csv в таблицу jockout js (ASP MVC)

106
10

Я работал с этими двумя учебниками, но мне сложно слить их вместе, чтобы загрузить CSV для заполнения таблицы. Скорее всего, это мое отсутствие понимания модели взгляда.

Здесь учебник по редактированию таблицы нокаута js с сайта нокаута js: KnockoutJS: редактируемая таблица сетки

И вот учебник по загрузке csv, на который я ссылаюсь:

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>

спросил(а) 2017-04-09T05:40:00+03:00 3 года, 5 месяцев назад
1
Решение
70

Я смог идентифицировать полностью квалифицированный для наблюдаемого массива, который, в свою очередь, заставил его работать:

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
});
}

ответил(а) 2017-04-10T02:32:00+03:00 3 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема