Javascript Angular:表达式传递到具有隔离作用域的自定义指令时出现标记错误

Javascript Angular:表达式传递到具有隔离作用域的自定义指令时出现标记错误,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,(消息、代码等稍作修改以解释问题) 错误: Syntax Error: Token 'promiseObject' is unexpected, expecting [:] at column 3 of the expression [{{promiseObject?promiseObject.activeDEM:0}}] starting at [promiseObject?promiseObject.activeDEM:0}}]. 以下代码解释了该问题: 使用的HTML: <coun

(消息、代码等稍作修改以解释问题)

错误:

Syntax Error: Token 'promiseObject' is unexpected, expecting [:] at column 3 of the expression [{{promiseObject?promiseObject.activeDEM:0}}] starting at [promiseObject?promiseObject.activeDEM:0}}].
以下代码解释了该问题:

使用的HTML:

<count-up id="feafdcds" duration="1" end-val='{{promiseObject?promiseObject.value:0}}' class="number" ></count-up>

不能使用有角度的双向绑定

endVal: '='
有棱角的表情

{{promiseObject?promiseObject.value:0}}
使用双向绑定时,如果值发生更改,请尝试将新值设置为绑定变量。 在本例中,要绑定到endVal的不是变量而是表达式。所以我不知道该怎么办

您有两个选择:

  • 如果不需要指令之外的endVal值,可以 使用

    endVal:'@'

  • 而是像这样删除模板中的计算括号

    <count-up id="feafdcds" duration="1" end-val='promiseObject?promiseObject.value:0' class="number" ></count-up>
    
    这样,当endVal更改时,Angular将始终更新promiseObject.value的值。但这也意味着您必须注意promiseObject始终存在(并且是一个对象)在您的外部控制器中的某个位置。 此外,您还必须将默认值0应用于其他地方的表达式,并尝试将其授予。您也可以在外部控制器中执行此操作,例如通过以下方式初始化promiseObject

    promiseObject = {
        value: 0
    }
    

    “=”是双向绑定,但您正在传递表达式。也许这就是问题的根源。我有没有别的办法可以做我想做的事?i、 e重新加载/重新运行/或某个指令,一旦promise对象被解析,当您更改作用域时会发生什么,以便endVal:“&”您可以创建JSFIDLE吗?或者扩展它:
    <count-up id="feafdcds" duration="1" end-val='promiseObject.value' class="number" ></count-up>
    
    promiseObject = {
        value: 0
    }