Как заставить Typescript и Knockout.js работать с приложением MVC - PullRequest
0 голосов
/ 11 июля 2019

Привязка нокаута .js viewModel к проблеме MVC.

Я пытался следовать по крайней мере 5 учебникам, и все они выглядят по-разному, у меня ничего не получалось. Я не получаю никаких ошибок при создании приложения.

Файл TS:

/// <reference path="../typings/knockout/knockout.d.ts" />
/// <reference path="../typings/jquery/jquery.d.ts" />

export module HopCRM {
    export class ContactViewModel {
        text: string = "Test";
        public test: KnockoutObservable<string>;

    constructor() {
        console.log("hello")
        this.test = ko.observable("Test testing testing")

    }             
}

}

Мой CSHTML:

<h2 data-bind="text: test">Waiting for viewModel</h2>

<script src="~/Scripts/Typescript/ContactViewModel.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1        /jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.0/knockout-min.js"></script>

<script type="text/javascript">
    var viewModel;
    (function () {
        viewModel = new HopCRM.ContactViewModel();
        ko.applyBindings(viewModel);  
    });
</script>

Я ожидаю привязки из публичного теста или хотя бы простого console.log

1 Ответ

0 голосов
/ 11 июля 2019

Для использования экспорта и модулей необходимо использовать веб-пакет.Если вам не нужна такая сложность, попробуйте использовать только классы без экспорта / импорта:

Ваш файл TS:

class ContactViewModel {
        text: string = "Test";
        public test: KnockoutObservable<string>;

    constructor() {
        console.log("hello")
        this.test = ko.observable("Test testing testing")

    }             
}

Использование (в cshtml):

const viewModel = new ContactViewModel();
ko.applyBindings(viewModel);

Смотрите мою рабочую скрипку: https://jsfiddle.net/koljada/dgnyspwa/3/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...