Grunt构建命令生成与开发人员

时间:2016-05-06 20:32:37

标签: javascript angularjs gruntjs

我有一个Angular项目,我正在使用Bower Yeoman和Grunt(v0.4.5),问题是当使用命令grunt build生成生产版本时,结果与我的开发人员版本不同;例如,下表{{field.type}}从未显示何时!field.edit为真(并显示编辑按钮)

<table class="table table-hover">
  <tr>  
    <th>{{ 'TYPE' | translate }}</th> 
    <th>{{ 'OPTIONS' | translate }}</th>    
  </tr>

  <tr ng-repeat="field in data.fields">         
    <td>
      <div ng-if="field.edit" class="form-group">              
        <select ng-model="field.typeT" ng-options="type for type in data.types" class="form-control" required/>
      </div> 
      <div ng-if="!field.edit" class="form-group">  
          {{ field.type }}   
      </div>               
    </td>           
    <td>
      <div ng-if="field.edit" class="form-group">              
        <button type="button" class="btn btn-success" ng-click="form.accept($index)">
            <span class ="glyphicon glyphicon-ok"></span> 
            {{ 'ACCEPT' | translate }}
        </button>                     
      </div> 
      <div ng-if="!field.edit" class="form-group">  
        <button type="button" class="btn btn-warning" ng-click="form.edit($index)">
            <span class ="glyphicon glyphicon-pencil"></span> 
            {{ 'EDIT' | translate }}
        </button>   
      </div>                
    </td>            
  </tr>                 
</table>

修改 这是控制器文件的一部分(在问题中添加的时间太长)

'use strict';

/**
 * @ngdoc function
 * @name demosApp.controller:formCreateCtrl
 * @description
 * # formCreateCtrl
 * Controlador de la forma generada dinamicamente
 */
angular.module('formModule')
  .controller('formCreateCtrl', ['$scope', 'formRESTService', 'selectedService'
                                ,'$location', 'formFieldRESTService', 'listRESTService'
                                , 'subFormRESTService', formCreateCtrl]);

    function formCreateCtrl ($scope, formRESTService, selectedService, $location
                            , formFieldRESTService, listRESTService, subFormRESTService) {

    $scope.data = {};
    $scope.info = {};

    $scope.data.fields = []; //Lista de campos del formulario
    $scope.data.form = {};
    $scope.data.types  = []; //Tipos de campos disponibles 
    $scope.info.isForm  = true; //variable para mostrar y ocultar el campo de imagen en el formulario de crear  

    initCtrl();

    /*
    * Funcion de inicio del controlador
    */
    function initCtrl () {
      formFieldRESTService.getTypes()
     .then(function (types) {
          $scope.data.types = types;
      })
     .catch(function (error) {
        console.log(error)
      });  
      .......         
    }

   /*
    * Valida que el nombre y el tipo de campo no sean nulos y los añade a la lista de campos
    */
    this.accept = function accept (index) {

      $scope.data.fields[index].edit = false;
      if (validationField(index)){
        $scope.data.fields[index].label = $scope.data.fields[index].labelT;
        $scope.data.fields[index].type = $scope.data.fields[index].typeT;
        //Añade el Id de la lista al campo
        if($scope.data.fields[index].list != undefined){
          $scope.data.fields[index].list_id = $scope.data.fields[index].list.list_id;          
        }
        //Añade el Id del formulario auxiliar al campo
        if($scope.data.fields[index].subForm != undefined){
          $scope.data.fields[index].sub_form_id = $scope.data.fields[index].subForm.sub_form_id;          
        }
      }
      console.log($scope.data.fields[index]);      
    }    

    this.edit = function accept (index) {
      $scope.data.fields[index].edit = true;
    }     

    .....
}

grunt文件是由generator-angular 0.12.1自动生成的,并且代码无法在此question

中看到任何更改

问题在于,当我使用grunt serve运行项目时,不会发生这些错误。

我可以解决这些不一致的问题吗?它们是我正在使用的问题Grunt版本吗?

感谢帮助:)

2 个答案:

答案 0 :(得分:1)

这不是你的问题,但是,请注意在AngularJS中使用grunt。

Angular使用方法签名来动态加载资源和模块。当您验证代码时,请确保grunt没有更改变量名称。

示例:

app.controller('XController',['$rootScope','$scope','$http','$location','servicesocket',function($rootScope, $scope, $http,$location,servicesocket) {

}]);

关于您的问题,请确保服务器和开发人员的节点版本。对于不同的平台,你可能会有不同的结果,主要是开发时的windows和生产中的linux。

答案 1 :(得分:0)

我终于找到了一个解决方案,但我不知道它为什么会起作用或者是什么错误,我唯一能做的就是颠倒HTML中标签的顺序

<div ng-if="!field.edit" class="form-group">  
     {{ field.type }}   
</div>              
<div ng-if="field.edit" class="form-group">              
     <select ng-model="field.typeT" ng-options="type for type in data.types" class="form-control" required/>
</div>   

但是我保持同样的怀疑这是咕噜的错误?