2013-12-10 77 views
6

我有一個對象,我希望看到一個指令內。
指令具有獨立的作用域,對象來自父控制器。將對象從父控制器傳遞到隔離範圍子指令

DOM:
<div hello-directive obj-to-track="{{myObj}}"></div>

指令JS:

scope:{ 
    objToTrack:'@' 
}, 
link:function(scope,element,attrs){ 
    scope.$watch(function(newValue){ 
     //Inside here, newValue is a JSON string 
     //So is scope.objToTrack 
    }); 
} 

反正是有擺脫母公司控制的實際對象除了JSON.parse()
感謝。

+1

你似乎對象和JSON之間進行感到困惑。 JSON是一種數據傳輸字符串格式。在你的應用程序中,你正在處理來自已交付數據的對象和數組 – charlietfl

+0

不知道爲什麼你認爲我很困惑。 – Francisc

+0

ok ...解釋評論'在這裏面,newValue是一個JSON字符串'。這意味着閱讀 – charlietfl

回答

8

只需使用"="結合:

scope:{ 
    objToTrack: "=" 
} 

看它像往常一樣:

scope.$watch("objToTrack", function(newval, oldval) { 
    ... 
}); 

使用它作爲:

<div hello-directive obj-to-track="myObj"></div> 
+3

我知道,但啓用雙向綁定。這不是一個巨大的問題,但我不希望指令能夠寫入它,如果可能的話。如果這是不可能的,那麼它將不得不這樣做。 – Francisc

+0

您不能禁止寫入 - 除非myObj是一個「原始」值。我的意思是,即使您將引用的副本傳遞給'myObj',該指令仍然可以訪問myObj的實際成員。這可以通過angular.copy()方法完成,然後再傳遞給指令,可能與'「&」'綁定相結合,但這可能更麻煩。 –

+0

好的,謝謝。我只是問我的指示不要改變它。 :) – Francisc

相關問題