AngularJS模板可以';不要使用包含连字符的JSON

AngularJS模板可以';不要使用包含连字符的JSON,angularjs,Angularjs,AngularJS模板不能使用键中包含连字符的JSON e、 g 我的Json看起来像 { ... link: { xx-test:{ href: '/test/xx' } } 现在,在我的angularjs模板中,如果我引用href,它将不起作用 <a ng-href="/app/edit?item={{item.link.xx-test.href}}"></a> 无法解析href呈现为的值 /

AngularJS模板不能使用键中包含连字符的JSON

e、 g

我的Json看起来像

{
   ...
   link: {
       xx-test:{
            href: '/test/xx'
         }
}
现在,在我的angularjs模板中,如果我引用href,它将不起作用

<a ng-href="/app/edit?item={{item.link.xx-test.href}}"></a>

无法解析href呈现为的值 /应用/编辑?项目=

它试过了

<a ng-href="/app/edit?item={{'item.link.xx-test.href'}}"></a>
<a ng-href="/app/edit?item={{item.link.xx\-test.href}}"></a>
<a ng-href="/app/edit?item={{item.['link.xx-test'].href}}"></a>

试试{{item.link['xx-test'].href}

有关括号符号的进一步阅读:


对象键需要引用:

$scope.bar = {'xx-test':'foo'};
角度表达式中应使用括号符号

<p>{{bar['xx-test']}}</p>
{{bar['xx-test']}


您可以选择在角度表达式中转义连字符
\-

不确定您的“json”(不是json,它是javascript对象,json是该对象的文本表示形式)来自何处,但如果您的键未被引用(如果它们包含无效的变量字符),则它不是有效的javascript对象。如果正确引用键,item.link[“xx test”].href应该可以工作。那么,这是由于角度限制还是键名中不应使用连字符?如果是前者,是因为DOM中的连字符名称与Javascript中的camelcase对应名称之间的转换(即-->myDirective)?是因为连字符被解释为负号
<p>{{bar['xx-test']}}</p>