我需要一个2状态切换按钮:每次点击时,都会更改其背景颜色和其文本标签(颜色和文本)。它的实现很简单,当按钮属于简单页面时,它可以正常工作。 相反,将按钮放在简单列表的每个元素(20个元素)中时,它不会更改其背景颜色,只会更改其标签文本,而不会更改其颜色。
这里有一些代码详细信息可以检查问题:
<StackLayout orientation="vertical" >
<ListView items="{{ items }}" itemTap="onItemTap">
<ListView.itemTemplate>
<StackLayout orientation="vertical" class="follow-button">
<Button text="Undefined" tap="onTap"/>
</StackLayout>
</ListView.itemTemplate>
</ListView>
</StackLayout>
并且在js方面(“值”未绑定到按钮,此处仅用于演示列表中单个按钮的点击问题):
var value = 1;
exports.onTap = function (args) {
view = args.object;
value = value === 1 ? 0 : 1;
view.text = value === 1 ? "button on" : "button off";
view.backgroundColor = value === 1 ? "red" : "white";
view.color = value === 1 ? "white" : "red";
}
我看到,删除或修复文本后,每次点击时背景都会正确更改。
有什么建议吗?
答案 0 :(得分:0)
我发现描述为here 似乎的修复程序就像一个符咒!
这是我发现的唯一解决方案,可以使应用程序代码完整无缺,而没有引入任何技巧来打破使用组件背后的哲学。
只需输入:
Object.defineProperty(View.prototype, "isLayoutValid", {
get: function () {
return (this._privateFlags & PFLAG_LAYOUT_REQUIRED) !== PFLAG_LAYOUT_REQUIRED;
},
enumerable: true,
configurable: true
});
在
node_modules/tns-core-modules/ui/core/view/view.ios.js
一切都神奇地修复了!