我有一个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版本吗?
感谢帮助:)
答案 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>
但是我保持同样的怀疑这是咕噜的错误?