1

我无法让 $watch 向我返回一个 Javascript 对象。它总是我一个字符串,而不是:“{'text':'Hello'}”

这是我的指令(CoffeeScript):

app.directive 'progressIndicator', ->
restrict : 'E'
scope : { progress : '@' }
link : (scope,element,attrs) ->
        scope.$watch 'progress' , (v) ->
            scope.curPrg = v
template :  '<label>In progress: {{curPrg.text}}' +
               '<progress></progress>'

和 HTML 代码:

<progress-indicator progress={'text':'Hello'}></progress-indicator>

我试过 attrs.$observe :同样的行为。

我试过控制器而不是链接:相同的行为。

怎么了 ?最好的方法是什么。最后,我希望能够做到:

4

1 回答 1

3

问题在于您要链接的范围。符号将@数据链接为字符串而不是对象。

而是尝试=,像这样:

app.directive 'progressIndicator', ->
restrict : 'E'
scope : { progress : '=' }
link : (scope,element,attrs) ->
    scope.$watch 'progress' , (v) ->
        scope.curPrg = v
template :  '<label>In progress: {{curPrg.text}}' +
           '<progress></progress>'
于 2013-11-11T18:24:11.933 回答