我有一个页面,可以使用点击按钮时调用的函数切换listview
可见/隐藏。
listview
元素的visibility
属性设置为
{{ showFixtures ? 'visible' : 'collapsed' }}
当我最初绑定页面时,showFixtures
变量设置为false
,listview
被隐藏。反转时,会显示listview
。这证明showFixtures
变量最初是绑定的。
点击按钮时,showFixtures
变量应在true
和false
之间切换。我可以点击按钮并调用该函数,看到页面变量已更改,但listview
元素不会变为可见/隐藏(取决于上下文)。
page.xml
<Page loaded="loaded">
<!-- ... -->
<Label text="Toggle Fixtures" ontap="toggleFixtures" />
<ListView items="{{ fixturesList }}" visibility="{{ showFixtures ? 'visible' : 'collapsed' }}">
<ListView.item>
<GridLayout class="list-matches-ko" rows="30" columns="auto,*">
<Label row="0" col="0" class="list-matches-ko-date" text="{{ koLabelDate }}" />
<Label row="0" col="1" class="list-matches-ko-time" text="{{ koLabelTime }}" />
</GridLayout>
</ListView.item>
</ListView>
<!-- ... -->
</Page>
page.js
var observableModule = require("data/observable");
var pageData = new observableModule.Observable;
exports.loaded = loaded;
function loaded(args){
page = args.object;
pageData.showFixtures = false;
page.bindingContext = pageData;
}
//...
exports.toggleFixtures = toggleFixtures;
function toggleFixtures(args){
pageData.showFixtures = pageData.showFixtures ? false : true;
console.log(args.object.bindingContext.showFixtures);
console.log(page.bindingContext.showFixtures);
console.log(pageData.showFixtures);
}
当按下按钮三次时,控制台上的输出为:
JS: true
JS: true
JS: true
JS: false
JS: false
JS: false
JS: true
JS: true
JS: true
如何通过使用绑定变量使listView
元素与此函数可见/隐藏,为什么它不像现在那样工作?
答案 0 :(得分:3)
由于你正在使用普通的nativescript observable尝试类似下面的内容
pagedata.set('showFixtures', YOUR TERNARY HERE)