私はAngularJSを初めて使用しています。私は特定の概念を頭に入れようとしています。私はどのように一方向のデータバインディングをうまく実行するかを理解しましたが、複雑なオブジェクトとの双方向バインドを実行する最善の方法を考えることはできません。オブジェクトを含むデータ結合モデルですが、フィールドに値を表示します
HTML
<input type="text" placeholder="Project Lead" ng-model="currentproject.projectLeader.name" />
JSが
$scope.ViewProject = function (project) {
$http.get('api/projects/' + project.id)
.success(function (data) {
$scope.currentproject = data;
})
.error(function (error) {
$scope.status = 'Unable to load selected project data: ' + error.message;
});
};
物事を単純化するために、projectLeader
はprojectLeader.id
とprojectLeader.name
ています。
私はinput
フィールドにフルprojectLeader
オブジェクトをバインドしようとしていますが、私はinput
の値のみがプロジェクトname
を表示したいです。これは理にかなっていますか?フィールドが変更されたときに新しいprojectLeader
を取得するにはどうすればよいですか?その人のためにid
を検索するために入力された名前でサーバに別の要求を呼び出すそのフィールドにng-change
を実行するのが最善でしょうか?スコープを変更しますか?
わかりました。私は彼らに 'currentproject'を修正させようとしています。だから、そのアップデートの提出で、私はちょうどすべてのプロジェクトの更新を返し、 'projectLeader.id'を新しい' projectLeader.name'から解決すべきですか?この値が変更されたかどうかを簡単に検出するには、更新が発生するたびに比較を行う必要はありませんか? –
期待している値は何ですか?プロジェクトリーダーの名前だけをバインドしている場合、名前以外のプロパティは変更されないので、単に比較することができます。または、フォームを使用してフォーム内のフィールドが汚れていないかどうかを確認できます。 –
私は 'currentproject'オブジェクトのプロパティからなるフォーム上にたくさんのフィールドを持っています。 'projectLeader'ピースには' id'と 'name'が結ばれています。ユーザーがフォームを更新すると、フォーム全体( 'currentproject')をサーバーに送り返します。ですから、 'projectLeader.name'フィールドが汚れていれば、フォームがサーバーに戻るたびにチェックするだけです。 –