3

We have input text to be shown with pre filled values. We are using list using ng-repeat directive

 <ul ng-repeat="post in postList>
   <input type="text" ng-model="postid" nginit="postid='{{post.id}}'"></input>
 </ul>

This question AngularJS - Value attribute on an input text box is ignored when there is a ng-model used? tells to how to prepopulate input text. But somehow we are finding it difficult using inside dynamic list. Can we do like this or there is any better approach?

When we this code we dont get any value in the text box but on checking in elements tab of developer console of chrome; we can see value is getting updated but not in the text box.

Community
  • 1
  • 1
Raichu
  • 117
  • 1
  • 11
  • data belongs to the model, why pre-populating a control when you should be pre-populating your model? – Dalorzo Aug 05 '14 at 20:07
  • Unrelated to your question, but the only valid child element of a `ul` is an `li`. – Steve Sanders Aug 05 '14 at 20:14
  • @Dalorzo Can you please explain a bit what we are doing wrong & how should we correct it? – Raichu Aug 05 '14 at 20:25
  • data belongs to the `model` like the accepted answer suggested you should bind, pre-populate and do all you data management over `postList` and not in your HTML View or over the controls in the HTML – Dalorzo Aug 05 '14 at 20:28

1 Answers1

7

Why don't you just bind directly to post.id? If it has a value, it will bind it to the value property of the text box.

Also, make sure you are using correct markup (input tag) and using the correct directives (ng-init). And I'm pretty sure to do not want to repeat the ul tag, but the items inside of it.

<ul>
    <li ng-repeat="post in postList">
        <input type="text" ng-model="post.id"></input>
    </li>
</ul>
dnozay
  • 23,846
  • 6
  • 82
  • 104
jcc
  • 1,137
  • 1
  • 12
  • 31