2015-11-06 3 views
-2

Мне нужна помощь, пожалуйста. Я работаю с AngularJS и угловым материалом. Я пытаюсь нажать объект на массив, но он отправляет мне сообщение «$ scope.myArrayOfObject.push не является функцией».

Мой код:

controller("ClientesCTRL",function($scope,$http,$q,$timeout,$location, datosFactory, userFactory, $mdDialog){ 
 
    $scope.clientes = []; 
 
    user = userFactory.getUser(); 
 
    if(user){ 
 
    $scope.selected = []; 
 

 

 

 
     $scope.query = { 
 
     filter : '', 
 
     order: 'rut', 
 
     limit: 5, 
 
     page: 1 
 
     }; 
 

 
     var data = {'op':1, 'rut' : user.rut}; 
 
     $http.post('functions/ClientesCTRL.php', data) 
 
     .success(function(results){ 
 
     console.log(results); 
 
     $scope.clientes = results; 
 
     }); 
 

 

 

 

 
     $scope.onpagechange = function(page, limit) { 
 
     var deferred = $q.defer(); 
 

 
     $timeout(function() { 
 
     deferred.resolve(); 
 
     }, 2000); 
 

 
     return deferred.promise; 
 
     }; 
 

 
     $scope.onorderchange = function(order) { 
 
     var deferred = $q.defer(); 
 

 
     $timeout(function() { 
 
     deferred.resolve(); 
 
     }, 2000); 
 

 
     return deferred.promise; 
 
     }; 
 

 
     $scope.verContacto = function(){ 
 
     datosFactory.setClienteContacto($scope.selected[0]); 
 
     $location.path("/contactos") 
 
     }; 
 

 

 
     $scope.eliminarCliente = function(ev) { 
 
     // Appending dialog to document.body to cover sidenav in docs app 
 
     var confirm = $mdDialog.confirm() 
 
      .title('Eliminar Clientes') 
 
      .content('Estás seguro?') 
 
      .ariaLabel('Lucky day') 
 
      .targetEvent(ev) 
 
      .ok('Eliminar') 
 
      .cancel('Cancelar'); 
 
     $mdDialog.show(confirm).then(function() { 
 
     alert("Cliente eliminado"); 
 
     }, function() { 
 

 
     }); 
 
    }; 
 

 

 
     $scope.addCliente = function(ev){ 
 
      $mdDialog.show({ 
 
      controller: AddClienteController, 
 
      templateUrl: 'addClienteForm.html', 
 
      parent: angular.element(document.body), 
 
      targetEvent: ev, 
 
      clickOutsideToClose:true 
 
     }) 
 
     .then(function(c) { 
 
      console.log(c); 
 

 

 
      var data = {'op':3, 'cl' : c, 'user':user}; 
 
      console.log(data); 
 
      $scope.clientes.push(c); 
 
      $http.post('functions/ClientesCTRL.php', data) 
 
      .success(function(results){ 
 
      if(results){ 
 
       alert("Cliente agregado"); 
 
       $scope.clientes = []; 
 
       $scope.clientes.push(c); 
 
      }else{ 
 
       alert("Error al agregar cliente"); 
 
      } 
 
      console.log(results); 
 
      }); 
 

 
     }, function() { 
 
      $scope.status = 'You cancelled the dialog.'; 
 
     }); 
 
     }; 
 

 
     function AddClienteController($scope, $mdDialog, $http) { 
 
     $http.post("functions/UsuarioCTRL.php",{'op':14}) 
 
     .success(function(results){ 
 
      if(results !== null){ 
 
      $scope.formaspago = results; 
 
      } 
 
     }); 
 
     $scope.hide = function() { 
 
      $mdDialog.hide(); 
 
     }; 
 
     $scope.cancel = function() { 
 
      $mdDialog.cancel(); 
 
     }; 
 
     $scope.btnAddCliente = function() { 
 
      $mdDialog.hide($scope.addCliente); 
 
     }; 
 
     }; 
 
    }
<md-dialog style="width:600px;" aria-label="Agregar Cliente" ng-cloak> 
 
    <form> 
 
    <md-toolbar> 
 
    <div class="md-toolbar-tools"> 
 
     <h1 style="letter-spacing:3px; text-transform:uppercase"><i class="fa fa-user"></i> Agregar Cliente/Empresa</h1> 
 
     <span flex></span> 
 
     <md-button class="md-icon-button" ng-click="cancel()"> 
 
     X 
 
     </md-button> 
 
    </div> 
 
    </md-toolbar> 
 
    <md-dialog-content style="max-width:800px;max-height:810px; "> 
 
    <div class="md-dialog-content"> 
 

 
     <md-input-container flex> 
 
      <label>Rut Cliente/Empresa</label> 
 
      <input ng-model="addCliente.rut" required="true"> 
 
     </md-input-container> 
 

 

 

 
     <md-input-container flex> 
 
      <label>Razón Social</label> 
 
      <input ng-model="addCliente.razon_social" required="true"> 
 
     </md-input-container> 
 

 
     <md-input-container flex> 
 
      <label>Nombre de fantasía</label> 
 
      <input ng-model="addCliente.fantasia" required="true"> 
 
     </md-input-container> 
 

 
     <md-input-container flex> 
 
      <label>Giro</label> 
 
      <input ng-model="addCliente.giro" required="true"> 
 
     </md-input-container> 
 

 
     <md-input-container flex> 
 
      <label>Teléfono</label> 
 
      <input ng-model="addCliente.telefono"> 
 
     </md-input-container> 
 

 
     <md-input-container flex> 
 
      <label>Dirección</label> 
 
      <input ng-model="addCliente.direccion" required="true"> 
 
     </md-input-container> 
 

 
     <md-input-container flex> 
 
      <label>Comuna</label> 
 
      <input ng-model="addCliente.comuna" required="true"> 
 
     </md-input-container> 
 

 
     <md-input-container flex> 
 
      <label>Observación</label> 
 
      <textarea ng-model="addCliente.observacion" rows="4"></textarea> 
 
     </md-input-container> 
 

 
     <md-input-container flex> 
 
      <label>Forma de pago</label> 
 
      <md-select ng-model="addCliente.forma_pago"> 
 
      <md-option ng-repeat="fp in formaspago" value="{{fp.forma}}"> 
 
      {{fp.forma}} 
 
      </md-option> 
 
     </md-select> 
 
     </md-input-container> 
 

 
    </div> 
 
    </md-dialog-content> 
 
    <div class="md-actions" layout="row"> 
 
    <span flex></span> 
 
    <md-button ng-click="btnAddCliente()" style="margin-right:20px;" > 
 
     Agregar Cliente 
 
    </md-button> 
 
    </div> 
 
    </form> 
 
</md-dialog>

Помогите мне пожалуйста. Grettings!

+0

Какая строка вызывает проблему –

+0

$ scope.clientes.push (c); Внутренняя функция addCliente – rottencit0p

ответ

0

Ваш массив не может быть массивом больше, вы указали clientes = results, вам нужно нажать results на clientes, если это не массив. $scope.clientes.push(results)

Кроме того, что такое «c»?

Вы пытаетесь нажать на значение, прикрепленное к cl, в своем data объекте?

В этом случае вам придется карту к нему через - $scope.clientes.push(data.cl)

+0

Спасибо, что я попытаюсь – rottencit0p

+0

В моем локальном хосте код работает, это странно:/ – rottencit0p

+0

Вы имеете в виду, что ваш код работает без каких-либо изменений? Или он теперь работает с предложенными изменениями ...? – xeon48

1
var data = {'op':1, 'rut' : user.rut}; 
    $http.post('functions/ClientesCTRL.php', data) 
    .success(function(results){ 
    console.log(results); 
    $scope.clientes = results; 
    }); 

вы уверены, что $ scope.clientes еще массив?

+0

второй массив массивов строк на $ scope.clientes – rottencit0p

+0

, но он равен результату позже –

+0

$ scope.clientes = results; если результаты не являются массивом. –

Смежные вопросы