从指令回调,使用更新的对象?

时间:2013-12-17 19:48:49

标签: angularjs angularjs-directive

See my plunkr,角度为1.0.8。

我想在我的控制器方法中使用更新的对象(由指令回调触发)。

这是目前的情况: enter image description here

有没有办法以某种方式处理更新的对象? (该指令在整个网站上使用,意味着非常通用)

2 个答案:

答案 0 :(得分:2)

原因是因为未跟踪该值。如果希望在摘要周期中监视值,则不能将原始类型用于模型,因为AngularJS需要对象类型来跟踪其原型的更改。

将模型更改为此,代码将正常运行。

  $scope.preferences =
    foo: {value: true}
    bar: {value: true}
    baz: {value: true}


  link: (scope)->
    scope.clicked = ->
      scope.model.value = !scope.model.value
      scope.callback({ value: scope.model })

DEMO

答案 1 :(得分:-1)

您正在使用隔离范围,因此值正在更新,而不是传播到父范围,直到摘要周期的后期。如果在上面的示例中单击“Foo”,则可以看到两者中的栏都为false。我不知道如何排队你的回调,直到完成其余的角度绑定,因为你需要访问你的回调中的其他范围元素,但你可以使用$ timeout(plunkr):

app.directive 'myCheckbox', ($timeout) ->
...
  scope.clicked = ->
    scope.model = !scope.model
    fn = ->
      scope.callback({ value: scope.model })
    $timeout fn, 1