У меня проблемы с отключением кнопки через свойство 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
, потому что я динамически обновляю список, который мне нужно заполнить, который также работает как задумано ...)