Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Angular和onClick函数向窗体添加行_Javascript_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

Javascript 如何使用Angular和onClick函数向窗体添加行

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

您好,我看过前面的答案,知道解决方案在于ng repeat,但我认为我的点击功能和/或数据结构存在问题。我有一个名为controller.addCPR的控制器对象,它有一组来自DB查询的属性

我要做的是使用单击函数在表单中复制一行,其中包含3个属性。使用ng repeat,行刚刚重复了它自己,但是add按钮仍然不做任何事情。任何帮助都是我的努力

控制器对象设置默认值

(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');
    };