Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript AngularJS An Introduction to Two-Way Data Binding Two-Way Binding: ngModelCtrl

Jonathan Grieve
MOD
Jonathan Grieve
Treehouse Moderator 91,253 Points

Struggling with Angular.js Two-Way Data Binding

Well, I think I've stumbled across what's going to be the toughest course I've taken on Treehouse yet.

I'm really struggling with this challenge, I think it's asking me to display the contents of the user.name property to a text box.

But I haven't got a clue how. I have a feeling the answer will be a little trickier compared to what the video teaches.

Help!!

app.js
angular.module('myApp', [])
.controller('myController', function($scope) {
  $scope.user = {
    name: 'Alex'
  };
})
.directive('myDirective', function () {
  return {
    require: 'ngModel',
    priority: 1,
    link: function ($scope, $element, $attrs, ngModelCtrl) {

      // YOUR CODE HERE
      ngNodelCtrl.$render = function() {
        console.log(useModelCtrl.$element({{user.name}}));
    }
    };
  }
});
index.html
<!DOCTYPE html>
<html ng-app="myApp">
<head>
  <title>Angular.js</title>
  <script src="js/angular.js"></script>
  <script src="app.js"></script>
</head>
<body ng-controller="myController">

  <p>Hello {{user.name}}</p>
  <input type="text" ng-model="user.name" />
  <div my-directive ng-model="user.name"></div>

</body>
</html>

1 Answer

Stefan Osorio
Stefan Osorio
16,419 Points

This is my (working) code:

ngModelCtrl.$render=function(){
  console.log(ngModelCtrl.$viewValue);
};

The "{{}}" notation is exlusively for use in markup. If you want to get the current string value of a view you can use the .$viewValue method on ngModelCtrl

https://docs.angularjs.org/api/ng/type/ngModel.NgModelController