2015-07-20 29 views
1

我有一個指令設置像這樣通在當前模型/範圍AngularJS指令

return { 
    restrict: 'E', 
    scope: { 
    savingModel: '=' 
    }, 
    templateUrl: '/templates/savingindicator' 
}; 

我用它像這樣:

<saving-indicator saving-model="myModel"></saving-indicator> 

我想利用這個遺留代碼,具有所有當前範圍/控制器上的myModel的屬性。我如何將它傳遞給這個指令?執行以下操作似乎並不爲savingModel工作爲空

<saving-indicator></saving-indicator> 
+0

當你說「當前範圍的myModel的所有屬性」時,你究竟是什麼意思?它們都是單獨的變量還是什麼?我很困惑,因爲如果有一個等價的myModel,你可以改變var的名字。遺留代碼是否不具有1個變量? – ajmajmajma

+0

遺留代碼具有所有通常位於'savingModel'中的正確屬性('saved','saving'等),但它們都在主控制器(其遺留物)上。如果我不能幫助它,我寧願不去改變它們。 – Chris

+1

啊,我明白了。那麼你可以改變指令的範圍,取而代之(或與之一起)整個myModel,這取決於你需要的靈活性。也許將它們添加到隔離範圍中,並在它們存在的指令IF中覆蓋savingModel屬性。你有多個不同的遺留代碼或只是這個?也許你甚至可以在兩者之間插入一條指令來將數據變形爲任何你需要的東西。 – ajmajmajma

回答

1

一個簡單的解決方案,假設你的問題是,該指令預計$scope.savingModel = {saved: false, saving: true},而是你有$scope.saving = true; // ...,將只是附加一個自我參照,並傳遞:

$scope.savingModel = $scope;

這可能,但是,如果你運行的任何對象的深/遞歸複印功能會出現問題。

最好的解決方案是重構代碼並創建單獨的模型對象,上面只是一個快速入門的工具。

+0

只是FYI I事後認爲,這是最好的行動方案 – Chris

+0

太棒了!很高興聽到正確的解決方案勝出。未來 - 克里斯一定會感謝你。 – DRobinson