在我们的代码库中,我们混合了以下各项:

  • attribute =“$ {something}”,attribute =“$ {something | converter}”等。
  • attribute.bind =“something”,attribute.bind =“something |转换器”

  • 我发现后者更容易阅读。

    我所指的示例与上述示例完全相同;即,它们不添加任何其他字符串内容。

    我认为在Aurelia上也更容易。我对么?

    同样,对于这些没有实际插值的特定情况
    涉及,第一种形式有什么好处吗? (不是
    少输入两个字符。)

    最佳答案

    给定您所显示的示例,我建议您使用选项2。它的确不是“在Aurelia上更轻松”,但更明确的是,您将该属性的值绑定(bind)到列出的属性。

    以下是的原始答案

    第一种选择的好处是,例如,当您拥有一个接受许多值但作为单个字符串的属性时。最常见的示例是class属性。 class属性在以空格分隔的列表中接受多个类:

    <div class="foo bar baz"></div>
    

    想象一下,我们只想基于VM baz上的 Prop ,从列表中添加或删除someProp类,而保留其他类。要使用.bind语法执行此操作,我们必须在VM上创建一个具有完整列表的属性,但要添加或删除baz,该属性由someProp的值确定。但是使用字符串插值绑定(bind),这变得更加简单:
     <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 : ''}`;
      }
    }
    

    最好的部分是我仍在值转换器中使用字符串插值:-)

    关于aurelia - .bind与aurelia中的字符串插值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42228379/

    10-12 12:59
    查看更多