【问题标题】:Component not accepting camelCase names组件不接受 camelCase 名称
【发布时间】:2019-08-10 01:50:46
【问题描述】:

我的问题在于我试图制作一个导航栏组件,一些数据必须从主页共享到组件,并且在花费几个小时研究如何使用组件时,我找不到可以解释原因的地方我不能使用 camelCase 变量名来绑定数据。

谁能给我一个资源来向我解释这一点,或者更好的是有一种方法可以使用 camelCase 来绑定数据,这将使我的代码更容易被团队阅读;给我一个更多样化的名字用于数据。

示例代码: HTML

<navbar-component theme="newux" class="screenOnly" title='projData'
                  titleId='vm.titleData' data='{{vm.project.id}}'>
</navbar-component>

组件

  bindings: {
    theme: "@",
    title:"@",
    titleId:"<",
    data:"@"
  }

【问题讨论】:

  • E.G titleId 不会工作,但是其他绑定可以
  • 对我来说似乎不是一个角度组件。我已经为你删除了标签,祝你的问题好运!
  • 您使用的是哪个版本的 Angular?
  • angularjs,我认为它的 1.5+
  • HTML 不区分大小写。 HTML5 解析器在构建 DOM 时将大小写混合的属性转换为小写。

标签: angularjs angularjs-components


【解决方案1】:

当您绑定到驼峰式属性时,您必须在通过属性设置它时使用破折号。例如:

<navbar-component theme="newux" 
                  class="screenOnly" 
                  title='projData' 
                  title-id='vm.titleData' 
                  data='{{vm.project.id}}'>
</navbar-component>

【讨论】:

  • 那么 javascript/angularjs 需要这样做的原因是什么?
  • 它被称为“属性归一化”,在the documentation 中进行了讨论。这是一种在不同的开发者偏好和浏览器实现中始终如一地处理事情的方法。
  • 还要注意以data- 开头的属性。前缀在规范化期间被剥离。如需更多信息,请参阅AngularJS Developer Guide - Attribute Normilization
  • 我在这个问题上花了 3 天时间,直到我遇到这个答案。谢谢你:)
猜你喜欢
  • 2021-10-31
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多