NativeScript:通过“!”翻转布尔值使用小胡子语法,即{{!true}}

时间:2019-01-09 14:13:37

标签: javascript css xml nativescript

我在使用小胡子语法通过其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 :(得分:0)

@Manoj的答案奏效了。

在我的JS文件中,我必须初始化<?php // create a new cURL resource $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, $smsurl); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // grab URL and pass it to the browser curl_exec($ch); // close cURL resource, and free up system resources curl_close($ch); ?>

isBusy

再次感谢!