Rubén Jiménez
Rubén Jiménez

Reputation: 1845

Trying to show a image from Angularjs controller

We've decided to use Mean.io in order to get a quick MEAN stack installation, but we're finding some troubles to get things done.

I'm trying to show a picture from my header js controller. But it doesn't show up. In fact, what i see when i open the inspector is just:

<img ng-src>

This is my HTML code, located in header.html:

<div class="page-header" data-ng-controller="HeaderController">
   <div class="logo pull-left">
       <a class="navbar-brand" ui-sref="home"><img ng-src="{{image.logo}}"/></a>
   </div>
</div>

As you may see, i've put "ng-src" and the var taken from the js controller.

This is the HeaderController:

'use strict';

angular.module('mean.system').controller('HeaderController', ['$scope', '$rootScope', 'Global', 'Menus',
  function($scope, $rootScope, Global, Menus) {
    $scope.global = Global;
    $scope.menus = {};
    $scope.image = {
      logo: 'assets/img/logo.png'
    };

    // Default hard coded menu items for main menu
    var defaultMainMenu = [];

    // Query menus added by modules. Only returns menus that user is allowed to see.
    function queryMenu(name, defaultMenu) {

      Menus.query({
        name: name,
        defaultMenu: defaultMenu
      }, function(menu) {
        $scope.menus[name] = menu;
      });
    }

    // Query server for menus and check permissions
    queryMenu('main', defaultMainMenu);

    $scope.isCollapsed = false;

    $rootScope.$on('loggedin', function() {

      queryMenu('main', defaultMainMenu);

      $scope.global = {
        authenticated: !! $rootScope.user,
        user: $rootScope.user
      };
    });

  }
]);

The template var is working correctly because if i put {{image.logo}} elsewhere it prints "assets/img/logo.png".

Suggestions? What am i missing?

Thanks in advance!

Upvotes: 1

Views: 1275

Answers (1)

ogulcank
ogulcank

Reputation: 21

I had the similar problem, I did the same as you have done and was getting 404 error for the PNG. When reviewed the other requests that are made, I came up with, you must pass the "package name" in the parameter logo as well.

Just as;

$scope.image = {
      logo: 'system/assets/img/logo.png'
    };

Than the logo is displayed as desired

Upvotes: 2

Related Questions