2016-11-08 10 views
2

私は、開発者がプロ​​パティを$ scope.settingsオブジェクトにバインドできるカスタムの角度ビューを追加できる機能を持っています。保存ボタンをクリックすると、$ scope.settingsオブジェクトがJSONに変換され、データベースに保存されます。予想通り<input type="text" ng-model="settings.name" />すべてが行くように、私は要素を追加している限り角度スコープのプロパティをディレクティブに渡すときに更新する方法は?

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

:このような何かが結果になります。

しかし、今、私はこのようなディレクティブを追加します:

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

「エディタ」ディレクティブをロードビュー代わりに「ビュー」プロパティに基づいて、次のコードで

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

を。ビューは第三者です。エディタはダイアログに読み込まれます。設定ダイアログの提出した後、次のコード行は、JSONに設定を変換します:$のscope.settings.nameではないので、この場合は

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

を私は、JSONに$ scope.settingsを解析することはできませんもう更新されました。代わりに$ scope.editorModel.valueが更新されました。

$ scope.editorModel.valueを$ scope.settings.nameにバインドするにはどうすればよいですか? $ scope.settingsをJSON値に変換する動的な方法をサポートしたいので、私はすべての$ scope.settings値をエディタモデルからの対応する値で更新する必要があるソリューションになりたくありません。データベースに格納されます。私はいけない例えば

+0

あなたが持っているコードの詳細な例を示すことができます? *達成したいことを記述している方法では、複数の 'editorModel'オブジェクトがあります。これは、' editor'の各インスタンスに対して1つです。しかし、あなたがここに示しているものは、複数のインスタンスに対して一つの '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> 
関連する問題