我需要一种方法来遍历AngularJS表单的已注册控件.本质上,我正在尝试获取所有$ dirty控件,但是没有控件数组(FormController除了包含控件本身之外还有许多不同的属性/函数 - 每个都作为它自己的对象).
我一直在看源代码,我看到controlsFormController中有一个数组正是我正在寻找的数组.有没有办法访问此值,或扩展FormController以包含一个返回此controls数组的函数?
编辑:Plnkr演示
另外,我意识到技术上我可以检查键字符串中的第一个字符"$",但是我希望避免在未来版本的Angular中FormController /指令发生变化的情况.
编辑2:另一个澄清:我所有这一切的目标是能够确定哪些特定字段是$ dirty,是否循环遍历整个控件列表(不包括$ dirty,$ invalid,$ error,$ name,以及生活在Form对象中的其他属性,或者通过扩展FormController并创建一个只返回当前脏的控件(并且不等于它们的起始值)的函数
编辑3:我正在寻找的解决方案需要适用于不同结构的表单/模型.范围上的模型是通过AJAX生成的,因此它们的结构已经设置好了(我想避免为我已经通过AJAX接收的所有数据硬编码新结构).此外,我希望在多个表单/模型中使用此表单提交过程,并且每个表单都具有不同的JSON结构 - 因为它们适用于对象模型中的不同实体.这就是为什么我选择了一种方法来访问controlsFormController中的对象(我将从FormController下面发布代码),因为它是我可以获得所有字段的平面数组的唯一地方.
function FormController(element, attrs) {
var form = this,
parentForm = element.parent().controller('form') || nullFormCtrl,
invalidCount = 0, // used to easily determine if we are valid
errors = form.$error = {},
controls = [];
// init state
form.$name = attrs.name || attrs.ngForm;
form.$dirty = false;
form.$pristine = true;
form.$valid = true;
form.$invalid = false; …Run Code Online (Sandbox Code Playgroud) 我正在使用ng-grid来显示正在上传的文件集合(每个文件都有自己的行).
如果一个/任何文件无法上传,我想修改该行并在其上放置一个类以显示它无法上传.
我如何将一个类添加到整行?
我要说这个问题,我已经为我的"LoginCtrl"进行了测试,它执行的操作几乎完全相同.我确信这是一个我忽略的非常小的问题.在此先感谢任何帮助:)
我httpBackend为我的测试设置了预期值/响应,但是当我运行时httpBackend.flush(),就好像我从未设定过期望值.
测试代码:
describe('user register', function () {
var scope, RegisterCtrl, httpBackend, userJohnDoe, userJohnDoeRegistered, Restangular;
// TEST
beforeEach(module('LR.User.Register'));
describe('RegisterCtrl', function () {
beforeEach(inject(function ($controller, _$httpBackend_, $rootScope, _Restangular_, $state) {
scope = $rootScope.$new();
httpBackend = _$httpBackend_;
Restangular = _Restangular_;
// Models
userJohnDoeRegistered = {
"access_token": "YzEyZDhjNjBlY2EwMTMxMmQzZGIzYWY5NDY4OGYwMjMzMGVjNDU3MDVhY2U0YjJmNDc1ODI3NWU0ODkzZGNkMQ",
"expires_in": 7200,
"token_type": "bearer",
"scope": null,
"refresh_token": "MmFhMTQ5NzU4ODI5ZjE2Mjk3ZjNlYzEwYzJkMjc4M2NkZjY2MjVkMjIwNWQzODUxYWNiYzY3NzIyMzEwYzJhNg",
"user": {
"username": "johndoe",
"email": "johndoe@test.net",
"id": 1,
"first_name": "John",
"middle_name": "f",
"last_name": "Doe",
"created": "2013-09-04T10:46:10-0500",
"updated": "2013-09-04T10:46:10-0500"
},
"status": "success",
"status_code": 200, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的单独网络服务器上设置响应标头,输出运行 nginx 的机器的物理名称,以便我可以知道哪些服务器正在为我们的网络客户端提供响应。
是否存在已经存在的变量来执行此操作?或者我是否只需要对每个服务器进行硬编码:(
当我的ui-grid中有足够的行来进行滚动时,由于某种原因,它似乎在列表的底部有很多空格.
我把它钉在了这段代码上(我想?):
styles['margin-top'] = hiddenRowWidth + 'px';
ui-grid.js的第3038行
不知道为什么它会在底部添加如此多的空白区域.有任何想法吗?我当时认为这是因为我的容器高度为100%,但即使具有特定的像素高度,它似乎也是如此.
编辑:嗯,现在我不确定那个代码是罪魁祸首.ui-grid-canvas元素有一个巨大的高度,仍然不确定为什么.
关闭它,因为它似乎是CSS相关的东西,这只是我的自定义CSS的问题.
我已经知道我不能只将它作为受保护变量存储在Command Class本身上(我尝试过它并且不起作用).有没有办法在命令的执行之间存储数据而不将该信息存储在数据库中或写入文件?
基本上,我每2分钟通过cron运行一个命令,但是我想设置一个每次运行命令时都会更改的标志.
以下不起作用,因为snc_redis.dashboard1每次运行命令时都会将受保护变量初始化为.
protected $redisDb = 'snc_redis.dashboard1';
protected function execute(InputInterface $input, OutputInterface $output)
{
if ( $this->redisDb == 'snc_redis.dashboard1') {
$this->redisDb = 'snc_redis.dashboard2';
}
else {
$this->redisDb = 'snc_redis.dashboard1';
}
}
Run Code Online (Sandbox Code Playgroud) angularjs ×4
javascript ×3
httpbackend ×1
jasmine ×1
karma-runner ×1
ng-grid ×1
nginx ×1
symfony ×1
symfony-2.7 ×1