В моем файле машинописных файлов я пытаюсь иметь наблюдаемый класс, который содержит все мои связанные с UI поля, которые я могу получить и отправить на сервер. У меня есть это outisde моей модели просмотра, так как я хочу отделить поля, которые я отправляю, ко всем другим элементам модели представления.TypeScript, нокаут и классы
Итак, в моем файле машинописных файлов я сначала создаю модель своего пользовательского интерфейса.
interface Model {
id: KnockoutObservable<number>;
}
class MyViewModel {
model: KnockoutObservable<Model>;
constructor() {
$.get("/api/debt/1")
.done((data) => {
this.model().id(data.ID);
});
}
}
Это не работает. По какой-то причине «this.model» неизвестен.
Является ли то, что я пытаюсь сделать даже возможным? Что я делаю не так?
Редактировать: Упрощено просто использовать свойство id. Использование интерфейса, а не класса. Ошибка в этом.model(). Id (data.ID), поскольку «режим не является функцией»). Не уверен, как инициализировать модель сейчас.
Спасибо за это! В моем .done, после того, как я получаю, это правильный способ назначить? Я внес изменения, которые вы сказали, но в задании он говорит мне, что «TypeError: this.model не является функцией». Кроме того, можно наблюдать наблюдаемую модель? Я хочу, чтобы свойства были видимыми. Может быть, это тоже ошибка? – Craig
Я думаю, проблема там может быть в том, что «это» больше не относится к классу и вместо этого относится к функции обратного вызова .done. Javascript это странно. Если вы измените свою .done-функцию на выражение лямбда, вместо этого машинопись будет автоматически переносить «этот» контекст. –
Обновлен мой ответ на примере лямбды. Дайте мне знать, если вам нужно больше объяснений. –