【问题标题】:Push empty row with input field using angularjs使用angularjs推送带有输入字段的空行
【发布时间】:2018-01-05 15:24:19
【问题描述】:

我有一张表,其中包含编辑、删除和添加选项。我的问题是当我单击添加按钮时想要添加带有空输入字段的行。我为此写了下面的代码。我应该怎么做才能添加具有空输入值的空行。

My code

    <div ng-controller="AppKeysCtrl">
<button ng-click="add()">
Add
</button>
<table class="table table-hover mytable">
    <thead>
        <tr>
            <th></th>
            <th>Created</th>
            <th>App Key</th>
            <th>Name</th>
            <th>Level</th>
 http://jsfiddle.net/Thw8n/155/#update           <th>Active</th>
            <th>Edit</th>
        </tr>
    </thead>
    <tbody>
        <tr data-ng-repeat="entry in appkeys" data-ng-class="{danger:!entry.active}">
        <td>{{$index + 1}}</td>
        <td>{{entry.timestamp | date:'mediumDate'}}</td>
        <td>{{entry.appkey}}</td>
        <td>
            <span data-ng-hide="editMode">{{entry.name}}</span>
            <input type="text" data-ng-show="editMode" data-ng-model="entry.name" data-ng-required />
        </td>
        <td>
            <span data-ng-hide="editMode">{{entry.level}}</span>
            <select class="form-control" name="entry.level" data-ng-model="entry.level" data-ng-show="editMode">
                <option value="3">3 - Developer Access - [Temporary]</option>
                <option value="2">2 - Standard Tool Access - [Default]</option>
                <option value="1">1 - Administrative Access - [Admin Section Only]</option>
            </select>
        </td>
        <td>
            <span data-ng-hide="editMode">{{entry.active && 'Active' || 'Inactive'}}</span>
            <select class="form-control" name="entry.active" data-ng-model="entry.active" data-ng-show="editMode">
                <option value="true">Active</option>
                <option value="false">Inactive</option>
            </select>
        </td>
        <td>
            <button type="submit" data-ng-hide="editMode" data-ng-click="editMode = true; editAppKey(entry)" class="btn btn-default">Edit</button>
            <button type="submit" data-ng-show="editMode" data-ng-click="editMode = false" class="btn btn-default">Save</button>
            <button type="submit" data-ng-show="editMode" data-ng-click="editMode = false; cancel($index)" class="btn btn-default">Cancel</button>
        </td>
</tr>
</tbody>
</table>
    <pre>newField: {{newField|json}}</pre></br></br>
    <pre>appkeys: {{appkeys|json}}</pre>
</div>

app = angular.module("formDemo", []);

function AppKeysCtrl($scope, $http, $location) {
    var tmpDate = new Date();

          $scope.newField = [];
          $scope.editing = false;

     $scope.appkeys = [
         { "appkey" : "0123456789", "name" : "My new app key", "created" : tmpDate },
         { "appkey" : "abcdefghij", "name" : "Someone elses app key", "created" : tmpDate }
     ];

    $scope.editAppKey = function(field) {
        $scope.editing = $scope.appkeys.indexOf(field);
        $scope.newField[$scope.editing] = angular.copy(field);
    }

    $scope.saveField = function(index) {
        //if ($scope.editing !== false) {
            $scope.appkeys[$scope.editing] = $scope.newField;
            //$scope.editing = false;
        //}       
   };

    $scope.cancel = function(index) {
        //if ($scope.editing !== false) {
            $scope.appkeys[index] = $scope.newField[index];
            $scope.editing = false;
        //}       
    };

    $scope.add = function () {
            var entry = {};
            //$scope.goals.push(goal);
            $scope.appkeys.push(entry);
        };
}

angular.element(document).ready(function() {
    angular.bootstrap(document, ["formDemo"]);
});

我有一个问题,当我单击添加空行时,正在添加具有 ng-hide 属性的表单字段。我想用每列的新输入框动态添加行。我该怎么办?请帮忙。

【问题讨论】:

    标签: angularjs html-table


    【解决方案1】:

    这很简单。您需要将具有空白值的对象推送到您的数组中。

    下面是代码:

    控制器

    $scope.add = function () {   
          $scope.appkeys.push({appkey : '', name : '', created : '' });
    };
    

    上面的代码只会添加一行。我已经更新了你的 JSFiddle 以获得你想要的输出。

    请通过给定的链接。

    http://jsfiddle.net/Thw8n/570/

    【讨论】:

    • 感谢您的回答,但我想在单击添加按钮时在每一列中添加
    • 编辑按钮在我的示例中工作正常,但是当我单击添加按钮时,我想添加这样的结构
    • 为什么每次在添加按钮上调用函数时都不尝试 ng-bind-html。 docs.angularjs.org/api/ng/directive/ngBindHtml
    • @vedankitakumbhar,我已经更新了我的答案。我更新了 jsfiddle。
    • 非常感谢。我想要完全相同的答案。我已经在我的代码中实现了这一点,出现“无法设置未定义的属性'1'”这样的错误是关于这个错误的任何想法。
    【解决方案2】:

    您需要粘贴以下代码:

       $scope.add = function () {
    
               $scope.appkeys.push({appkey : '', name : '', created : '' });
        };
    

    【讨论】:

      【解决方案3】:

      您可以在 appkey 数组中推送具有空属性的对象:

      var tempObject = {
          "appkey":"",
          "name":"",
          "created":""
      };
      $scope.appkeys.push(tempObject);
      

      【讨论】:

      • 感谢您的回复,但是当我单击添加按钮时,我想添加这样的结构
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多