2016-11-08 45 views
2

我有功能,開發人員可以添加自定義的Angular視圖,他們可以將屬性綁定到$ scope.settings對象。當點擊保存按鈕時,$ scope.settings對象將被轉換爲JSON並保存到數據庫。這樣的事情會是這個結果:如何在角度範圍屬性傳遞到指令時更新?

{ 
    "name": "bob", 
    "age": "25" 
} 

只要我添加元素,如<input type="text" ng-model="settings.name" />一切都如預期。

但是,現在我想補充的指令是這樣的:

<umb-property property="property in properties"> 
    <umb-editor model="property"></umb-editor> 
</umb-property> 

用下面的代碼:到位基礎上的「視圖」特性

$scope.properties = [ 
    { 
     label: 'Name', 
     alias: 'name', 
     view: 'textbox', 
     value: $scope.settings.name 
    }, 
    { 
     label: 'Age', 
     alias: 'age', 
     view: 'number', 
     value: $scope.settings.age 
    } 
]; 

的「編輯」指令負荷意見。意見是第三方。編輯器會在對話框中加載。提交設置對話框後,下面的代碼行會的設置轉換成JSON:

$scope.dialog = { 
    submit: function (model) { 
     var settingsJson = JSON.stringify(model.settings); 
    }, 
    close: function (oldModel) { 
     // 
    } 
}; 

在這種情況下,我無法分析$ scope.settings到JSON,因爲$ scope.settings.name不更新了。 $ scope.editorModel.value被更新。

如何將$ scope.editorModel.value綁定到$ scope.settings.name? 我不想最終得到一個解決方案,我必須用編輯器模型中的相應值更新所有$ scope.settings值,因爲我想支持將$ scope.settings轉換爲JSON值的動態方法在數據庫中。

+0

可以告訴你,你有代碼的一個更完整的例子?你描述你想要完成的事情的方式,你會有多個'editorModel'對象,每個'editor'對象都有一個。然而,你在這裏展示的是試圖爲多個實例使用一個單獨的'editorModel',這並不真正起作用。 – Claies

+0

我認爲這可能是你做你的指示的方式,你可以把完整的指令代碼嗎? Tnx –

+0

我用更具體的例子提供了我的問題。 –

回答

0

例如,我不想做的事:$scope.settings.name = $scope.properties[0].value

使用property accessors

for (var i=0; i<$scope.properties.length; i++) { 
    $scope.settings[$scope.properties[i].alias] = $scope.properties[i].value; 
}; 

HTML

<div ng-repeat="prop in properties"> 
    <input ng-model="prop.value"> 
</div>