NativeScript: переключение логического значения с помощью "!" в синтаксисе усов, т.е. {{! true}} - PullRequest
0 голосов
/ 09 января 2019

У меня проблемы с отключением кнопки через свойство isEnabled с использованием синтаксиса усов. Вот как выглядит XML (упрощенно):

<Page loaded="onLoad">
    <StackLayout>
        <Button class="btn" isEnabled="{{ !isBusy }}"/>
        <ActivityIndicator busy="{{ isBusy }}"/>
    </StackLayout>
</Page>

Я могу успешно показать ActivityIndicator при установке isBusy на true в наблюдаемом, однако стиль :disabled не применяется к моей кнопке. Вот как выглядит CSS, кнопка должна изменить цвет с ярко-красного на серый:

.btn {
    color: #FF0000;
    border-color: #FF0000;
}

.btn:disabled {
    color: #888888;
    border-color: #888888;
}

И, наконец, мой JS-код выглядит следующим образом. isBusy создается неявно путем установки его на true, это работает, так как индикатор показывает, когда он должен.

const observable = require("tns-core-modules/data/observable");
const ObservableArray = require("tns-core-modules/data/observable-array").ObservableArray;

var someArray = new ObservableArray([]);

var pageData = observable.fromObject({
    listItems: someArray,
});

exports.onLoad = function (args) {
    const page = args.object;
    page.bindingContext = pageData;
    doSomething();
}

function doSomething () {
    pageData.set("isBusy", true);
    // doing something that takes some time
    pageData.set("isBusy", false);
}

Я подозреваю, что синтаксис {{ !isBusy }} неправильный, что странно, потому что он работал раньше. Я недавно обновил свои зависимости с NativeScript 4.x до 5.0, может, это как-то связано с проблемой?

(ObservableArray является частью моего pageData, потому что я динамически обновляю список, который мне нужно заполнить, который также работает как задумано ...)

1 Ответ

0 голосов
/ 09 января 2019

@ Ответ Маноя сработал.

В моем файле JS я должен был инициализировать isBusy:

var pageData = observable.fromObject({
    listItems: someArray,
    isBusy: false
});

Еще раз спасибо!

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