自定义布尔属性不会像内置那样绑定。checked.bind='1===2'
不会在标记中包含选中的属性。 myboolatt.bind='1===2'
将在标签中包含myboolatt。我做了myboolatt.bind='1===2 | boolconverter'
来注销该值,它显示为false
。
那我做错了什么?似乎Aurelia在绑定表达式上不一致。另一个实例是我可以重复执行此title=${$index<12}
并且得到了期望的结果。所以我认为这会起作用-myboolatt.bind=${$index<12}
。甚至无法编译。
相信我,我已经阅读了所有文档(并不意味着我没有错过任何内容)和许多帖子,包括Aurelia团队之间关于布尔属性的长期讨论。
我在“”和$ {}中都包装了表达式,但都无法使用。
感觉我正在丢失1条至关重要的信息,这些信息会神奇地解释这些不一致之处并杀死我的挫败感。我这么喜欢Aurelia的原因之一(基于约定的基础上)是,我实际上只是猜测了几件事-认为这就是我的做法-如果他们不能正常工作的话会叮叮当当。< / p>
我真的觉得这应该工作。所以我再次问-我在做什么错了?
谢谢
答案 0 :(得分:0)
如果使用的是.bind
,请将其绑定到js / ts文件中的att
变量,并且不应使用任何美元符号或方括号。
例如,myboolatt.bind=${$index<12}
应该是myboolatt.bind="$index<12"
。美元符号索引的使用与绑定无关。这只是Aurelia提供的变量。
要使用不带绑定的变量时,请使用${variable}
。
checked属性不存在,我在标签中猜测是因为它的评估结果为false,而checked属性不是true / false属性。选中的输入看起来像<input type="checkbox" checked/>
答案 1 :(得分:0)
这不是Aurelia的约束力。我最初创建bool属性,但不需要绑定。他们只是空课。然后我需要绑定,所以我添加了必要的方法。最终导致使用myboolatt
引起混乱的原因是,valueChanged
并没有向myboolatt.bind
发送T或F的参数。不是普通的js,这让我有点恼火,我发现有多种处理方式。无论如何,这里是属性和用法。希望对别人有帮助。
谢谢
function private_ValueChanged(self, att, value) {
if (value === false) self.element.removeAttribute(att);
else self.element.setAttribute(att, '');
}
export class toggleCustomAttribute {
static inject = [Element];
constructor(element) { this.element = element; }
valueChanged(newValue, oldValue) { private_ValueChanged(this, 'toggle', newValue);
}
export class radioCustomAttribute {
static inject = [Element];
constructor(element) { this.element = element; }
valueChanged(newValue, oldValue) { private_ValueChanged(this, 'radio', newValue); }
}
<ff-button repeat.for="keymen of keyChangeMenu" radio.bind="$index<12" class='ff-button' click.delegate="keyChangeClick($event.target)" id.bind="$index+'_key'" >
${keymen[0]}<sup>${keymen[1]}</sup>
</ff-button>