4

AngularDart mustaches{{...}}和其他指令中允许的表达式语法是什么?

4

1 回答 1

2

这是 AngularDart 表达式的 EBNF 语法,与Dart 编程语言规范中使用的符号相同。这些表达式可以作为 Angular 指令的参数出现。虽然语法允许,例如,用分号分隔的表达式、赋值和条件列表,但并非所有指令都接受这些——例如,支持可能带有赋值的多个表达式,而 mustache 指令需要一个表达式。ng-click{{...}}

expressions: expression (';' expressions)?
expression:
    literal
  | id args?                        # variable or function
  | expression '.' id args?         # member
  | expression '|' id filterArg*    # filter
  | expression '[' expression ']'
  | preOp expression
  | expression binOp expression
  | expression '?' expression ':' expression
  | expression '=' expression           # assignment
args: '(' expressionList? ')'
filterArg: ':' expression
expressionList: expression (',' expression)?
literal:
    'null'
  | stringLiteral
  | numberLiteral
  | boolLiteral
  | '[' expressionList? ']'
  | '{' (keyValuePair (',' keyValuePair)? )? '}'
keyValuePair:
  expression ':' expression

preOp 和 binOp 主要是 Dart 支持的(尽管我将不得不交叉检查)。这里有一个格式更好的上述版本(我无法让 MD 合作)。

于 2014-03-13T04:16:03.860 回答