2015-10-04 70 views
1

看看這個代碼片斷從我的指令AngularJS指令 - 「scope:{}」是什麼意思?

return { 
    controller: 'MyController', 
    controllerAs: 'vm', 
    scope: {}, 
    bindToController: { 
     name: '=', 
     id: '=' 
    }, 
    // .... 

再後來在我看來,我可以使用:

<div>{{ vm.name }}</div> 

我的問題是:爲什麼我們需要設置scope: {}首先?如果我刪除,代碼會中斷。

注意:如果您想知道爲什麼我在bindToController而不是scope的綁定,我從這篇文章(http://toddmotto.com/no-scope-soup-bind-to-controller-angularjs/)得到了這個想法。

+0

你正在使用哪個版本..它應該是角度1.4 + –

+0

@PankajParkar:是的,這是正確的。我認爲我的解決方案不適用於1.3.x? – Ricky

+0

在1.3中是正確的,它只是簡單的'bindToController:true' –

回答

1

默認情況下,除非明確設置,否則指令不會創建它們自己的範圍。這可以幫助你多一點What is the difference between scope:{} and scope:true inside directive?

+0

中沒有丟失謝謝@ mic4eal。剛看到你的編輯。我會檢查鏈接 – Ricky

+0

@Ricky,如果你想要更多的信息,然後閱讀本文提供的信息http://www.undefinednull.com/2014/02/11/mastering-the-scope-of-a- directive-in-angularjs/ – mic4ael

+0

謝謝@ mic4eal;現在對我更加清楚。因此,基於此,'scope:{}'似乎是更乾淨的方法,因爲它不與父級結合,因此不依賴於父變量。它是否正確?我想,如果一個指令總是與父代一起使用,那麼'scope:true'就可以工作......但是看起來好像它違背了'無耦合'範例 – Ricky