2017-01-30 3 views
0

js /コントローラにジョブの配列があります。配列内の各ジョブオブジェクトには、jobName、company、cityなどの属性があります。属性を入力したフォームを送信してジョブオブジェクトにし、コントローラーのjobs配列にプッシュすることは可能ですか?フォーム入力からオブジェクトを作成してコントローラメソッドに渡す

たとえば、私はフォームを持っており、Software Developer、StackOverflow、NYを入力します。フォームを正しい属性を持つオブジェクトにラップし、コントローラのジョブの配列に渡してビューに表示できますか?

はここ

 <form name="jobForm" ng-submit="list.addJob(jobForm)"> 
       <div class="form-group" id="test"> 
        <label>Job Name:</label> 
        <input ng-model="jobName" type="text"/> 
       </div> 
       <div> 
        <label>Company:</label> 
        <input ng-model="companyDescription" type="text"/> 

        <div><button type="submit">Enter job entry</div> 
       </div> 

       <!-- this is where the live preview is. ng-model in the input binds it to these values --> 
       <blockquote> 
       <h4><u>Live Preview</u></h4> 
        <b>Job Name:</b> {{jobName}} 
        <div><b>Company:</b>{{companyDescription}}</div> 
       </blockquote> 
     </form> 

は、だから私は、オブジェクトの名前と会社名属性としてjobNameはとcompanyDescriptionの入力を使用してジョブオブジェクトを作成したい...これまでのところ、私のフォームのコードです。これどうやってするの?または私は間違ったアプローチを使用しています。お手伝いありがとう!手始めに

答えて

2

ng-modelは常にそもそもオブジェクトのプロパティであることを黄金のルールがある...か、だからあなたの全体の問題がないことによって単純化され

相続による子スコープの問題の多くに実行することができますあなたは、サーバーにそれを送信する必要がある場合、個々のスコープのプロパティを使用して

$scope.job={} 
<input ng-model="job.jobName" type="text"/> 
<input ng-model="job.companyDescription" type="text"/> 

で始まるように、フォーム内のすべてのng-modelに対して1つのオブジェクトを使用すると、その後は

$http.post(url, $scope.job).then(func.... 
を行うのと同じくらい簡単です

または別のアレイへの迅速な対応のための

$scope.allJobs.push($scope.job); 
    $scope.job = {} // reset 
+0

感謝をプッシュ。私はちょっと新しいので、少し混乱しています。関連項目: $ scope.job = {} $ scope.job = {}はオブジェクトを作成しますか?私はjavaから来て、オブジェクトの暗黙的な作成が私をたくさん混乱させます。 –

+1

はい、そうです。私はコントローラコードとビューコードを分けていませんでした。 .job = {} 'はコントローラの中ではもちろん – charlietfl

+0

になるでしょう。そのng-modelがオブジェクトプロパティでなければならないことは何を意味しましたか?私は$ scopeを使用せず、コントローラを "インスタンス"として使用しました。 –

関連する問題