One issue is that the field doesn’t clear after they make a post. To fix that, simply set $scope.postBody to null inside addPost():

$scope.postBody = null

Because the data binding is two-way, anything you set $scope.postBody to will update the input element, and vice versa.

Another issue is that the user can post empty posts. To fix that, simply wrap the addPost() logic in the following conditional:

if ($scope.postBody) {

Here is a complete example of the app with some Bootstrap code added for pizazz:

<!DOCTYPE html>
  <link rel="stylesheet" href="">
<body ng-app='app'>
  <div ng-controller='PostsCtrl' class='container'>
    <h1>Recent Posts</h1>
    <form role='form'>
      <div class='form-group'>
        <div class='input-group'>
          <input ng-model='postBody' class='form-control' />
          <span class='input-group-btn'>
            <button ng-click='addPost()' class='btn btn-default'>Add Post</button>
    <ul class='list-group'>
      <li ng-repeat='post in posts' class='list-group-item'>
        <strong>@{{ post.username }}</strong>
        <span>{{ post.body }}</span>
  <script src=''></script>
    // create our app module
    var app = angular.module('app', [])

    // create the PostsCtrl module
    // dependency inject $scope
    app.controller('PostsCtrl', function ($scope) {

      // the function runs when the "Add Post" button is clicked
      $scope.addPost = function () {
        // Only add a post if there is a body
        if ($scope.postBody) {
          // unshift a new post into $scope.posts
            username: 'dickeyxxx',
            body: $scope.postBody // use the text entered
          // clear out the input field
          $scope.postBody = null

      // starting data
      $scope.posts = [
          username: 'dickeyxxx',
          body: 'Node rules!'
          username: 'jeffdickey',
          body: 'trying out angular.js...'

wrapping up

You now have a fully functioning app for posting status updates. As I’m sure you’re astutely aware, the major problem now is that it never persists. These posts disappear when the user closes the browser window. You could persist them into the browser’s local storage, but that wouldn’t allow you to share the data with other users (which is pretty important for a social networking application).