1

I want using ng-controller to bring some data with using Bootstrap media object but i can't load data. my code :

 <!DOCTYPE html>
 <html lang="en" ng-app="confusionApp">

 <head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head
     content must come *after* these tags -->
<title>Ristorante Con Fusion: Menu</title>
    <!-- Bootstrap -->
<link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="../bower_components/bootstrap/dist/css/bootstrap-theme.min.css" rel="stylesheet">
<link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet">
<link href="styles/bootstrap-social.css" rel="stylesheet">
<link href="styles/mystyles.css" rel="stylesheet">

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
 </head>

<body>

<div class="container">
    <div class="row row-content">
        <div class="col-xs-12" ng-controller="DishDetailController">
          <div class="media">
              <div class="media-left media-middle">
                <a href="#">
                  <img class="media-object img-thumbnail" ng-src={{dish.image}} alt="Uthappizza">
                </a>
              </div>
              <div class="media-body">
                <h2 class="media-heading">{{dish.name}}
                <span class="label label-danger label-xs">{{dish.lable}}</span>
                <span class="badge">{{dish.price | currency}}</span></h2>
                <p>{{dish.description}}</p>
              </div>
            </div>
        </div>
        <div class="col-xs-9 col-xs-offset-1">
            <p>Put the comments here</p>
        </div>
    </div>

</div>

<script src="../bower_components/angular/angular.min.js"></script>

<script>

    var app = angular.module('confusionApp',[]);

    app.controller('DishDetailController', function() {

        var dish={
                      name:'Uthapizza',
                      image:'images/uthapizza.png',
                      category:'mains', 
                      label:'Hot',
                      price:'4.99',
                      description:'A unique combination of Indian Uthappam (pancake) and Italian pizza, topped with Cerignola olives, ripe vine cherry tomatoes, Vidalia onion, Guntur chillies and Buffalo Paneer.',
                      comments: [
                           {
                               rating:5,
                               comment:"Imagine all the eatables, living in conFusion!",
                               author:"John Lemon",
                               date:"2012-10-16T17:57:28.556094Z"
                           },
                           {
                               rating:4,
                               comment:"Sends anyone to heaven, I wish I could get my mother-in-law to eat it!",
                               author:"Paul McVites",
                               date:"2014-09-05T17:57:28.556094Z"
                           },
                           {
                               rating:3,
                               comment:"Eat it, just eat it!",
                               author:"Michael Jaikishan",
                               date:"2015-02-13T17:57:28.556094Z"
                           },
                           {
                               rating:4,
                               comment:"Ultimate, Reaching for the stars!",
                               author:"Ringo Starry",
                               date:"2013-12-02T17:57:28.556094Z"
                           },
                           {
                               rating:2,
                               comment:"It's your birthday, we're gonna party!",
                               author:"25 Cent",
                               date:"2011-12-02T17:57:28.556094Z"
                           }

                       ]
                };

             this.dish = dish;

    });

</script>

</body>

</html>

please help me...

3 Answers 3

1

To be able to access a variable from the template, this variable must be on the $scope. If you only expose it on the controller itself (i.e. using this.dish = ...), then the controller itself must be on the $scope, using

<div ng-controller="DishDetailController as ctrl">
  ...
  {{ ctrl.dish.name }}
</div>
Sign up to request clarification or add additional context in comments.

Comments

0

Change the line:

this.dish = dish;

for:

$scope.dish = dish;

Also, just after your module definition add:

$scope.dish = {};

1 Comment

Just add to it. Should add $scope in controller declaration as well. app.controller('DishDetailController', function($scope)
0

You forgot to add controller as syntax in the ng-controller directive.

Working Demo :

angular.module('confusionApp', [])

.controller('DishDetailController', function () {
   var dish={
                      name:'Uthapizza',
                      image:'images/uthapizza.png',
                      category:'mains', 
                      label:'Hot',
                      price:'4.99',
                      description:'A unique combination of Indian Uthappam (pancake) and Italian pizza, topped with Cerignola olives, ripe vine cherry tomatoes, Vidalia onion, Guntur chillies and Buffalo Paneer.',
                      comments: [
                           {
                               rating:5,
                               comment:"Imagine all the eatables, living in conFusion!",
                               author:"John Lemon",
                               date:"2012-10-16T17:57:28.556094Z"
                           },
                           {
                               rating:4,
                               comment:"Sends anyone to heaven, I wish I could get my mother-in-law to eat it!",
                               author:"Paul McVites",
                               date:"2014-09-05T17:57:28.556094Z"
                           },
                           {
                               rating:3,
                               comment:"Eat it, just eat it!",
                               author:"Michael Jaikishan",
                               date:"2015-02-13T17:57:28.556094Z"
                           },
                           {
                               rating:4,
                               comment:"Ultimate, Reaching for the stars!",
                               author:"Ringo Starry",
                               date:"2013-12-02T17:57:28.556094Z"
                           },
                           {
                               rating:2,
                               comment:"It's your birthday, we're gonna party!",
                               author:"25 Cent",
                               date:"2011-12-02T17:57:28.556094Z"
                           }

                       ]
                };

             this.dish = dish;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="confusionApp" ng-controller="DishDetailController as myCtrl">
      <div class="row row-content">
        <div class="col-xs-12">
          <div class="media">
              <div class="media-left media-middle">
              </div>
              <div class="media-body">
                <h2 class="media-heading">{{myCtrl.dish.name}}
                <span class="label label-danger label-xs">{{myCtrl.dish.lable}}</span>
                <span class="badge">{{myCtrl.dish.price | currency}}</span></h2>
                <p>{{myCtrl.dish.description}}</p>
              </div>
            </div>
        </div>
        <div class="col-xs-9 col-xs-offset-1">
            <p>Put the comments here</p>
        </div>
    </div>
</div>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.