javascript - Pre-loading checkboxes with ng-model -


i'm trying build form series of checkboxes represent polymorphic association between 2 models in database. have jobdescription , experiencelevel. form update jobdescription , has checkbox each experiencelevel. when form opens in modal, want have current experience levels checked associated job.

i've been struggling figure out how implement checkboxes using ng-repeat , ng-model. current code renders checkboxes, correct ones not pre-selected.

here editjob method in controller:

$scope.editjob = function(r) {      var experiencelevels = {};      r.experience_levels.map(function(r, i){         experiencelevels[i] = r.name;     });     $scope.experiencelevels = experiencelevels;      $scope.id = r.id;     $scope.title = r.title;     $scope.jobfunction = r.role;     $scope.description = r.description;     $scope.postinglink = r.posting_link;     $scope.company = r.company_name;      var modalinstance = $modal.open({         templateurl: '/assets/admin/editjob.html',         controller: modalinstancectrl,         scope: $scope,         resolve: {             jobform: function () {                 return $scope.jobform;             }         }     }); }; 

here part of form checkboxes:

<div class="form-group">     <label>experience level</label>     <div ng-repeat="experiencelevel in expitems">         <input type="checkbox" name="experiencelevel.display"                 ng-model="job.experiencelevels['experiencelevels']"                 ng-true-value="experiencelevel">         {{experiencelevel.display}}     </div> </div> 

i'm still not sure how pre-select checkboxes though. don't appear bound model.

i figured out solution problem. don't know if it's practice (would love feedback) seems work way want.

in controller pre-assign experience levels so:

$scope.editjob = function(r) {     var experiencelevels = {};      r.experience_levels.map(function(r){         experiencelevels[r.name] = "true";     }); 

and on form decided bind experiencelevel.display rather experiencelevel.key, so:

<label>experience level</label> <div ng-repeat="experiencelevel in expitems">     <input type="checkbox" name="experiencelevel.display" ng-model="job.experiencelevels[experiencelevel.display]" ng-true-value="true" ng-false-value="false">     {{experiencelevel.display}} </div> 

this gives me params hash looks like:

{     "id"=>"23",     "title"=>"ruby ninja",     "jobfunction"=>"customer support",     "description"=>"awesomesauce!",     "postinglink"=>"http://www.google.com/",     "experiencelevels"=>{         "entry level"=>"false", "manager"=>"true"     },     "company"=>"ice 2 go",     "action"=>"update",     "controller"=>"admin/job_descriptions",     "job_description"=>{         "id"=>23, "title"=>"ruby ninja", "description"=>"awesomesauce!"     } } 

i can experiencelevel name in rails controller.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -