powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / TypeScript - почему AddCustomer() не работает?
4 сообщений из 4, страница 1 из 1
TypeScript - почему AddCustomer() не работает?
    #39718823
Blackmore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
module CustomerUIModule {


    export class CustomerUIModel {

        public customers: KnockoutObservableArray<CustomerModule.Customer>;
        service: CustomerServiceModule.CustomerService;



        constructor(svc: CustomerServiceModule.CustomerService, data: any) {
            this.service = svc;
            this.customers = ko.observableArray(data);
        }

        // DOESN'T WORK - called but this.customers is nothing
        AddCustomer(elem: CustomerModule.Customer) {
            this.customers.push(elem);
        }

        // WORKS!!!
        AddCustomer2 = (elem: CustomerModule.Customer): void => {
            this.service.Insert(elem, (d) => {
                var tt = 0;
            });
            this.customers.push(elem);
        }



В AddCustomer2() this.customers вполне себе адекватный. А вот почему в AddCustomer() там оказыается NULL?
...
Рейтинг: 0 / 0
TypeScript - почему AddCustomer() не работает?
    #39718871
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что у вас в AddCustomer2 используется стрелочная функция =>, у нее нет собственного значения this, она берет ее из внешнего окружения, поэтому у вас доступен "customers"

А "AddCustomer" функция со своим локальным this, в том контексте никакого customers не было.

попробуйте так.

Код: javascript
1.
2.
3.
AddCustomer(elem: CustomerModule.Customer) {
            this.customers.push(elem);
        }.bind(this)
...
Рейтинг: 0 / 0
TypeScript - почему AddCustomer() не работает?
    #39718991
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или в конструкторе надо этот this биндить, не помню уже. Сори, проверить не могу сейчас. (От изучения React все уже в голове смешалось)

Код: javascript
1.
this.AddCustomer= this.AddCustomer.bind(this);
...
Рейтинг: 0 / 0
TypeScript - почему AddCustomer() не работает?
    #39719074
Фотография Arpanx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет, сори я какую-то ерунду написал выше.

В методах this такое-же как и в class .
Все по идее должно работать. Почему у вас оно не работает, понятия не имею.
Самому теперь интересно.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / TypeScript - почему AddCustomer() не работает?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]