如何修复AngularJS组件属性的语法错误?

时间:2017-04-13 18:05:35

标签: angularjs angular-components

您好我将此组件用作datetimepicker: https://dalelotts.github.io/angular-bootstrap-datetimepicker/

我在运行时生成了多个日期字段,此组件需要引用字段名称,如下面的代码所示

<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#{{param.Name}}' }" />

但是我在选择日期后收到angular.js 的错误

enter image description here

我只问这个语法,如何解决?

完整的代码就是:

enter image description here

更新

对不起伙计们,你们都提出了相同的语法,

datetimepicker-config="{ dropdownSelector: '#' + {{ param.Name }} }"

但它没有用,当我打开页面时立即打破:

  

错误:[$ parse:syntax]语法错误:令牌&#39; {&#39;列无效键   表达式中的28 [{dropdownSelector:&#39;#&#39; + {{param.Name}}}]   从[{param.Name}}}开始。

我认为此处缺少单引号...

3 个答案:

答案 0 :(得分:1)

与文档说的一样,dropdownSelector需要一个字符串。所以你必须连接:

<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#' + param.Name }" />

答案 1 :(得分:1)

双花括号{{ }}插值与id属性一起使用,因为$compile service正在对本机HTML属性进行插值绑定。 datetimepicker-config属性是AngularJS组件属性,其评估为Angular Expression

不要在Angular表达式中使用插值{{ }}

<!-- DONT interpolate in Angular Expressions 
<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#{{param.Name}}' }" />
-->

<!-- INSTEAD -->
<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#' + param.Name }" />

里面有什么角度表达?双花括号{{}}是角度表达式。 datetimepicker-config属性的值与angular无关,它只是一个JS对象{}

使用单向datetimepicker-config绑定评估<属性。 未评估为简单的JavaScript对象。它被评估为Angular Expression。双花括号为DOM interpolation binding.双曲面括号{{ }}在Angular Expressions中不是合法语法。

有关详细信息,请参阅:

  
    

Syntax Error: Token '{' invalid key at column 28 of the expression { dropdownSelector: '#' + {{ param.Name }} } starting at { param.Name }} }

  
     

错误:$ parse:syntax

     

语法错误

     

描述

     

表达式中存在语法错误时发生。编译表达式时会抛出这些错误。错误消息包含更准确的错误描述,包括发生错误的表达式中的位置(列)。

     

要解决此问题,请详细了解AngularJS expressions,找出错误并修复表达式的语法。

     

— AngularJS Error Reference - $parse:syntax

答案 2 :(得分:0)

修复

<datetimepicker 
data-ng-model="data.embeddedDate" 
datetimepicker-config="{ dropdownSelector: '#' + {{ param.Name }} }" />

data-ng-model =&#34; data.embeddedDate&#34; 添加到您的ng-model