See my plunkr,角度为1.0.8。
我想在我的控制器方法中使用更新的对象(由指令回调触发)。
这是目前的情况:
有没有办法以某种方式处理更新的对象? (该指令在整个网站上使用,意味着非常通用)
答案 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 })
答案 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