我似乎无法使用指令绑定模板上的属性。任何帮助或建议都会很棒!
它给了我这个错误:
[$ parse:syntax]语法错误:令牌' {'第2列的无效密钥 表达式[{{$ ctrl.CalendarOpen}}]从 [{$ ctrl.CalendarOpen}}]。
这是我的指示:
app.directive('datePickerDirective', [function () {
return {
restrict: 'AE',
scope: {
},
template: `
<input type="text" class="form-control"
uib-datepicker-popup="shortDate"
name="date" is-open="{{$ctrl.CalendarOpen}}"
ng-model="test" datepicker-options="dateOptions"
ng-required="true" close-text="Close" />`,
controller: function() {
var $ctrl = this;
$ctrl.CalendarOpen = true
},
controllerAs: '$ctrl',
}
}]);
答案 0 :(得分:0)
从{{
属性中删除双重is-open
括号:
template: `
<input type="text" class="form-control"
uib-datepicker-popup="shortDate"
̶n̶a̶m̶e̶=̶"̶d̶a̶t̶e̶"̶ ̶i̶s̶-̶o̶p̶e̶n̶=̶"̶{̶{̶$̶c̶t̶r̶l̶.̶C̶a̶l̶e̶n̶d̶a̶r̶O̶p̶e̶n̶}̶}̶"̶
name="date" is-open="$ctrl.CalendarOpen"
ng-model="test" datepicker-options="dateOptions"
ng-required="true" close-text="Close" />`,
uib-datepicker-popup
指令正在尝试使用$parse Service评估is-open
属性,{{
以id="{{$ctrl.CalendarOpen}}"
开头是非法的。
来自文档:
错误:$ parse:syntax语法错误
描述
表达式中存在语法错误时发生。编译表达式时会抛出这些错误。错误消息包含更准确的错误描述,包括发生错误的表达式中的位置(列)。
要解决此问题,请详细了解Angular Expressions,找出错误并修复表达式的语法。
如果我添加
id
,则不会给我错误
在这种情况下没有错误,因为没有解析{{
属性的指令。双curley Private WithEvents myItem As outlook.MailItem
Private Sub myItem_AttachmentRead(ByVal myAttachment As Outlook.Attachment)
If myAttachment.Type = olByValue Then
MsgBox "If you change this file, also save your changes to the original file."
End If
End Sub
括号内的表达式由— AngularJS Error Reference - $parse:syntax Error服务进行评估,转换为文本,并插入到DOM中。
当指令将属性解析为$interpolate时,将插值混合到该表达式中是不明智的。
来自文档:
为什么混合插值和表达式是不好的做法:
- 它增加了标记的复杂性
- 无法保证它适用于每个指令,因为插值本身就是一个指令。如果另一个指令在插值运行之前访问属性数据,它将获得原始插值标记而不是数据。
- 它会影响性能,因为插值会为范围添加另一个观察者。
- 由于这不是推荐用法,我们不对此进行测试,对AngularJS核心的更改可能会破坏您的代码