angularjs - How to bind variables to INPUT dynamically -


i have object in controller value getting http request:

$scope.myobj = {        id1: "1",       id2: "5",       id3: "",       id4: ""     }; 

it can have number of fields (id...) values. if id-k not empty id-n n < k not empty too.

i need bind input last not empty field of object. best way it?

here plnkr

update: object position in classificator. in example id of position 1.5. need allow edit last position in classification. user can change 5 6, 7 or else, can not change 1 segment

if object be

$scope.myobj = {            id1: "2",           id2: "5",           id3: "4",           id4: "8"         }; 

the classification 2.5.4.8 , user must able edit last segment - 8.

controller

... $scope.myobj = {   id1: "1",   id2: "5",   id3: "6",   id4: "" };  $scope.segments = object.keys($scope.myobj)   .filter(function(key) {     return $scope.myobj[key];   })   .sort(function(a, b){     return number(a.replace('id', '')) - number(b.replace('id', ''));   });  ... 

html

<span ng-repeat="segment in segments">    <span ng-if="!$last">{{ myobj[segment] }}</span>    <input ng-if="$last" ng-model="myobj[segment]"> </span>  <p>{{ myobj }}</p> 

plnkr - https://plnkr.co/edit/8c9llldcvvzfinaoxqtd?p=preview


original answer

you can calculate last non blank id in controller , set scope variable. like

$scope.mylast = $scope.myobj['id' + object.keys($scope.myobj).reduce(function(a, key){   if ($scope.myobj[key]) {     var idnum = number(key.replace('id', ''));     = math.max(a, idnum)   }   return a; }, -infinity)]; 

note - can't rely on order of keys, can't assume last key biggest one.


plnkr - https://plnkr.co/edit/apy8qznjnk4q23j5ja4n?p=preview


Comments

Popular posts from this blog

SVG stroke-linecap doesn't work for circles in Firefox? -

routes - Laravel 4 Wildcard Routing to Different Controllers -

cross browser - XSLT namespace-alias Not Working in Firefox or Chrome -