Foros del Web » Programando para Internet » Javascript » Frameworks JS »

$scope definido dentro de la vista.

Estas en el tema de $scope definido dentro de la vista. en el foro de Frameworks JS en Foros del Web. Hola buenas Chicos!!! Quiero ver si hay alguien por aqui que me pueda echar una mano con un pequeño problema que tengo, que ya se ...
  #1 (permalink)  
Antiguo 18/01/2015, 11:41
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años
Puntos: 3
$scope definido dentro de la vista.

Hola buenas Chicos!!!

Quiero ver si hay alguien por aqui que me pueda echar una mano con un pequeño problema que tengo, que ya se me esta convirtiendo en dolor de cabeza.

Explico lo que me pasa. Tengo un en la vista definido un $scope de esta forma:
Código:
ng-init="product= {"marca":"adidas", "price":"30€", "mainImage":"url de la image"}
el ng-init esta en u "li" de esta forma
Código HTML:
<li n-init="product= {"marca":"adidas", "price":"30€", "mainImage":"url de la image"}> </li> 
y este li esta dentro de un bucle en Ruby (pero bueno en mi entender creo esto no afecta en mi función en angular).

Lo que quiero hacer es que cuando hago click en un botón que tengo dentro del "li" este a la vez me compila un html en el y a la vez quiero que me pinte la información del json.

Este es el templete donde quiero pintar los datos que recojo del json que esta dentro de un ng-init:

Código:
<script type="text/ng-template" id="quickpreview.html">
            <div class="content-preview">
                <div class="content-preview-inner">
                  <span class="full-preview"></span>
                  <span class="close-preview"></span>
                  <div class="block block-left left">
                    <div class="content-tabs">
                      <dl class="tabs vertical" data-tab>
                        <dd class="active"><a href="#panel1">Tab 1</a></dd>
                        <dd><a href="#panel2">Tab 2</a></dd>
                        <dd><a href="#panel3">Tab 3</a></dd>
                        <dd><a href="#panel4">Tab 4</a></dd>
                        <dd><a href="#panel5">Tab 5</a></dd>
                      </dl>
                      <div class="tabs-content vertical">
                        <div class="content active" id="panel1">
                            <div class="content-img">
                              <div class="main-img">
                                <img ng-src="{{product.mainImage}}" alt="">
                              </div>
                              <div class="thumbnails">
                                <a class="th" role="button" aria-label="Thumbnail" href="">
                                  <img aria-hidden=true src=""/>
                                </a>
                              </div>
                            </div>
                        </div>
                        <div class="content" id="panel2">
                          <p>This is the second panel of the basic tab example. This is the second panel of the basic tab example.</p>
                        </div>
                        <div class="content" id="panel3">
                          <p>This is the third panel of the basic tab example. This is the third panel of the basic tab example.</p>
                        </div>
                        <div class="content" id="panel4">
                          <p>This is the fourth panel of the basic tab example. This is the fourth panel of the basic tab example.</p>
                        </div>
                        <div class="content" id="panel5">
                          <p>This is the fifth panel of the basic tab example. This is the fourth panel of the basic tab example.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                  <div class="block block-right right">
                    <div class="content-details">
                        <div class="details">
                          <h3 class="title-product">{{product.brand}}</h3>
                           <h2 class="short-desc">{{product.shortname}}</h2>
                          <div class="block-price">
                          </div>
                        </div>
                    </div>
                  </div>
                </div>
            </div>
        </script>

Aqui dejo mi controller y directive:

Código:
(function() {

  'use strict';

  var app = angular.module('quickPreview');

  app.controller('globalCtrl', function ($scope) {

      // var e = angular.element($("[ng-init]"));
      // console.log(e);
      // $scope.product = e.attr('ng-init');

      // console.log($scope.product);



        $scope.product = [];


     var logSomeStuff = function(){
        console.log($scope.product);
     }

    $scope.$evalAsync(logSomeStuff);




  });

}(window, window.angular));

Mi directives:

Código:
(function (){

  "use strict";

  var app = angular.module('quickPreview');

  app.directive('previewProduct', function ($compile,$templateCache) {

      return {
        restrict: 'A',
        replace: false,
        transclude: false,
        scope: {
            attrData: '=dataOverview'
        },
        link: function(scope, element, attrs) {


          element.bind('click', '.sd-click-preview', function (){
                var preview = angular.element($templateCache.get('quickpreview.html'));
                var cpreview = $compile(preview);
                element.append(preview);
                cpreview(scope);
                console.log(cpreview(scope))
                if (scope.attrData) {
                    console.log(this, '=> this');
                }

          });

        }
    };

  });

}(window, window.angular));
  #2 (permalink)  
Antiguo 21/01/2015, 02:47
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: $scope definido dentro de la vista.

Estas haciendo las cosas mal, deberías utilizar un servicio REST para traer esa información, en lugar de utilizar el ng-init generado desde ruby.

Te recomiendo generar ese template basado en la respuesta de un servicio REST que te mande la información de los productos.

Saludos

Etiquetas: javascript, json
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:21.