See my plunkr,角1.0.8。從指令回調,使用更新的對象?
我想使用我的控制器方法中的更新對象(由指令回調激發)。
這是目前的情況:
有沒有一種方法來更新的對象以某種方式上工作? (該指令在整個網站上使用,其意圖非常通用)
See my plunkr,角1.0.8。從指令回調,使用更新的對象?
我想使用我的控制器方法中的更新對象(由指令回調激發)。
這是目前的情況:
有沒有一種方法來更新的對象以某種方式上工作? (該指令在整個網站上使用,其意圖非常通用)
原因是因爲價值沒有被追蹤。由於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 – apneadiving
@apneadiving AngularJS的共同規則是總是使用「引用」,場景背後沒有魔法。 – zsong
@apneadiving我剛剛看到你今天提出的問題,同樣的問題。你應該可以修復它。因爲它與你的問題無關,所以與'$ digest'有關的所有內容都可以忽略。你只需要調用'scope。$ apply'(如果改變了)** OUTSIDE ** AngularJS的範圍。 – zsong
您正在使用隔離範圍,因此該值正在更新,直到稍後在摘要循環中才傳播到父範圍。如果你在上面的例子中點擊'Foo',你可以看到這兩個條都是假的。我不知道你怎麼排隊回調,直到角裝訂的其餘部分,因爲你需要訪問在回調其他範圍元素做,但你可以用$超時(plunkr):
app.directive 'myCheckbox', ($timeout) ->
...
scope.clicked = ->
scope.model = !scope.model
fn = ->
scope.callback({ value: scope.model })
$timeout fn, 1
請超時是不是一種選擇 – apneadiving
我的問題包括有效的代碼,怪異的「關閉」的原因...... – apneadiving