在我们的代码库中,我们混合了以下内容:
我觉得后者更容易读懂。
我提到的示例与上面的完全相同;也就是说,它们不添加任何额外的字符串内容。
我觉得对奥雷利亚来说也更容易。我说的对吗?
此外,对于这些不涉及实际插值的具体情况,第一种形式是否有任何好处?(除了这两个字符外,键入的字符较少。)
发布于 2017-02-14 14:40:22
鉴于您展示的示例,我建议使用选项2。它确实不是“在Aurelia上更容易”,但更明确的是,您将该属性的值绑定到所列的属性。
原来的答案在下面
第一个选项的好处是,例如,当您拥有一个接受多个值但作为单个字符串的属性时。这方面最常见的示例是class属性。class属性接受空格分隔列表中的多个类:
<div class="foo bar baz"></div>假设我们只想在离开其他类的同时,根据VM baz上的一个支柱从这个列表中添加或删除类someProp。要使用.bind语法来实现这一点,我们必须在VM上创建一个具有完整列表的属性,但是按照someProp的值来添加或删除baz。但是使用字符串内插绑定,这就变得更简单了:
<div class="foo bar ${someProp ? 'baz' : ''}"></div>您可以想象如何通过添加或删除多个类来扩展它。您也许可以使用.bind语法创建一个值转换器来实现这一点,但最终可能会出现一些可读性差的东西。
我可以想象,正在创建的值转换器可能类似于使用中的如下内容:
<div class.bind="someProp | toggleClass:'baz':'foo':bar'"></div>我真的认为这比使用字符串内插语法的可读性低得多。
顺便说一下,我上面想象的值转换器应该是这样的:
export class ToggleClassValueConverter {
toView(value, toggledClass, ...otherProps) {
return `${otherProps.join(' ')} ${value ? toggledClass : ''}`;
}
}最好的部分是,我仍然在值转换器中使用字符串插值:-)
发布于 2017-02-14 17:51:15
在浏览了一下标签之后,我发现了这个。虽然这不是完全相同的事情,而且有点旧,但在https://github.com/aurelia/templating-binding/issues/24#issuecomment-168112829上有一件类似的事情是由Danyow先生(强调我的)谈论的
是的,绑定行为的符号是&(而不是用于值转换器的值)。
<input type="text" data-original="${name & oneTime}" value.bind="name" />这里是编写一次性绑定的标准方法。--在解析和绑定方面,这将更加轻量级:<input type="text" data-original.one-time="name" value.bind="name" />
我不知道它是否适用于本例中的. .bind/${name}情况以及oneTime实例,但如果引起他的注意,他可能会说两种方法。
考虑到这不是一个枯燥乏味的答案,我将把阿什利的答案标记为答案,因为它确认了清晰的问题,并提供了关于其他用例的有用信息,如果其他人使用类似的术语进行搜索的话。
https://stackoverflow.com/questions/42228379
复制相似问题