javascript - angular expressions do not work inside the controller scope -


i facing strange problem below code..

whenever remove ng-controller="page" body tag, expressions start getting evaluated. on applying controller on body tag, expressions tend printed text rather being evaluated.

below relevant code (snippet):

<html ng-app="app">     <head>         <!-- links removed brevity -->         <script>             var app = angular.module('app',[]);             app.controller('page',function($scope){                 $scope.segment.name = 'asdf';             });         </script>     </head>     <body ng-controller="page" style="padding:0px;">         <!-- additional markup removed brevity -->         <form class="navbar-form navbar-right" role="search">             <div class="form-group">                 <input type="text" class="form-control" placeholder="enter portal id" ng-model="page.segment.name"/>             </div>             <button class="btn btn-default">search {{page.segment.name}}</button>         </form>     </body> </html> 

i possibly making blunder in above code below code wrote proof of concept works well.

poc code (snippet):

<html ng-app="app">     <head>         <!-- links removed brevity -->     </head>     <body ng-controller="page">         <a>name : {{page.segment.name}}</a>         <input type = "text" ng-model="page.segment.name"/>     </body>     <!-- links removed brevity -->     <script>         var app = angular.module('app',[]);         app.controller('page',['$scope',function($scope){}]);     </script> </html> 

kindly in advance..

you getting error in console. guess it's similar "cannot set property 'name' of undefined." doing here not valid:

$scope.segment.name = 'asdf'; 

you need either this:

$scope.segment = {}; $scope.segment.name = 'asdf'; 

or this:

$scope.segment = { name: 'asdf' }; 

you have create segment object explicitly before attempt set properties on it.


Comments