Javascript 如何使用Angular和onClick函数向窗体添加行
您好,我看过前面的答案,知道解决方案在于ng repeat,但我认为我的点击功能和/或数据结构存在问题。我有一个名为controller.addCPR的控制器对象,它有一组来自DB查询的属性 我要做的是使用单击函数在表单中复制一行,其中包含3个属性。使用ng repeat,行刚刚重复了它自己,但是add按钮仍然不做任何事情。任何帮助都是我的努力 控制器对象设置默认值Javascript 如何使用Angular和onClick函数向窗体添加行,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,您好,我看过前面的答案,知道解决方案在于ng repeat,但我认为我的点击功能和/或数据结构存在问题。我有一个名为controller.addCPR的控制器对象,它有一组来自DB查询的属性 我要做的是使用单击函数在表单中复制一行,其中包含3个属性。使用ng repeat,行刚刚重复了它自己,但是add按钮仍然不做任何事情。任何帮助都是我的努力 控制器对象设置默认值 (function() { 'use strict'; angular .module('globalAdmin.sta
(function() {
'use strict';
angular
.module('globalAdmin.states_3')
.controller('AddCPRModalController', AddCPRModalController);
AddCPRModalController.$inject = ['$uibModalInstance', 'StatesService'];
function AddCPRModalController($uibModalInstance, StatesService) {
controller.addCPR = {
alert: 'No',
weight: 10,
status: 'y',
dte: new Date()
};
controller.onAddRowClick = function () {
var row = {
url: controller.addCPR.url,
type: controller.addCPR.type,
dynamic: controller.addCPR.dynamic
};
controller.addCPR.push(row)
console.log('clicked');
};
//other controller functions not listed here
}
})();
我试图在表单中单击复制的行的html
<div ng-repeat="row in controller.addCPR" class="form-group row add-row" ng-class="{'has-danger': addCPRForm.url.$dirty && addCPRForm.url.$invalid}">
<label class="col-sm-2 control-label" for="inputDate">URL(s):</label>
<div class="col-sm-4">
<input type="text" class="states-url" ng-model="controller.addCPR.url" placeholder="Enter URL's here">
</div>
<div class="col-sm-2">
<label>Type:
<div class="type-dropdown">
<select ng-model="controller.addCPR.type">
<option value="html">HTML</option>
<option value="pdf">PDF</option>
<option value="csv">CSV</option>
<option value="xls">XLS</option>
<option value="txt">TXT</option>
<option value="dbf">DBF</option>
<option value="doc">DOC</option>
<option value="sas">SAS</option>
<option value="ppt">PPT</option>
<option value="png">PNG</option>
<option value="jpg">JPG</option>
</select>
</div>
</label>
</div>
<div class="col-sm-3">
<label>Dynamic:
<div class="dynamic-dropdown">
<select ng-model="controller.addCPR.dynamic">
<option value="n">No</option>
<option value="y">Yes</option>
</select>
</div>
</label>
</div>
<button class="addRow" ng-click="controller.onAddRowClick()">+</button><button class="removeRow"
ng-click="onRemoveRowClick()">-</button>
</div>
最后,我修改了click函数为
controller.onAddRowClick = function() {
var row = {
url : '',
type : '',
dynamic : ''
};
controller.rows.push(row);
console.log('clicked');
};
现在,按预期在单击时添加该行。感谢大家的投入
controller.addPCR
是一个对象,而不是数组。这是问题中的错别字吗?我问你,因为你正在对它调用push
,它会爆炸。@AluanHaddad no它是一个对象,我正在使用它设置表单controller.addCPR.push(row)
中其他属性的默认值。。。您应该在控制台中得到一个错误that@AluanHaddad没有错误,甚至从控制台日志返回“单击”都没有。您的控制器
对象中包含哪些代码?控制器。addPCR
是一个对象,而不是数组。这是问题中的错别字吗?我问你,因为你正在对它调用push
,它会爆炸。@AluanHaddad no它是一个对象,我正在使用它设置表单controller.addCPR.push(row)
中其他属性的默认值。。。您应该在控制台中得到一个错误that@AluanHaddad没有错误,甚至没有从控制台日志“单击”返回您的控制器
对象包含哪些代码?
controller.onAddRowClick = function() {
var row = {
url : '',
type : '',
dynamic : ''
};
controller.rows.push(row);
console.log('clicked');
};