xeditable行内的可编辑核对清单

时间:2015-02-17 20:04:07

标签: javascript angularjs x-editable

我尝试在xeditable示例的可编辑行内实现清单状态。不幸的是,列表不起作用。 它显示禁用行时的当前状态,以及处于编辑模式时的所有选项,但不检查选定的状态。我不知道如何正确连接当前$ scope.user.statuses对象的复选框..

脚本:

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

app.run(function(editableOptions) {
  editableOptions.theme = 'bs3';
});

app.controller('Ctrl', function($scope, $filter, $http) {
 $scope.users = [
    {id: 1, name: 'user1', statuses: [2,3]},
    {id: 2, name: 'user2', statuses: [1]},
    {id: 3, name: 'user3', statuses: [1,2,3,4]}
  ]; 

 $scope.statuses = [
    {value: 1, text: 'status1'},
    {value: 2, text: 'status2'},
    {value: 3, text: 'status3'},
    {value: 4, text: 'status4'}
 ];
 $scope.showStatus = function(user) {
     var selected = [];
        angular.forEach($scope.statuses, function(s) {
            if (user.statuses.indexOf(s.value) >= 0) {
                selected.push(s.text);
            }
        });
     return selected.length ? selected.join(', ') : 'Not set';
  };

  $scope.saveUser = function(data, id) {
    angular.extend(data, {id: id});
    return $http.post('/saveUser', data);
  };

});

HTML

<div ng-app="app" ng-controller="Ctrl">
   <table class="table table-bordered table-hover table-condensed">
    <tr style="font-weight: bold">
      <td style="width:30%">Name</td>
      <td style="width:40%">Status</td>
      <td style="width:30%">Edit</td>
    </tr>
    <tr ng-repeat="user in users">
      <td>
        <!-- editable username (text with validation) -->
        <span editable-text="user.name" e-name="name" e-form="rowform" e-required>
          {{ user.name || 'empty' }}
        </span>
      </td>  
      <td>
       <span  editable-checklist="user.statuses" e-form="rowform" e-ng-options="s.value as s.text for s in statuses">
           {{ showStatus(user) }} 
       </span>
      </td>
      <td style="white-space: nowrap">
        <!-- form -->
        <form editable-form name="rowform" onbeforesave="saveUser($data, user.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == user">
          <button type="submit" ng-disabled="rowform.$waiting" class="btn btn-primary">
            save
          </button>
          <button type="button" ng-disabled="rowform.$waiting" ng-click="rowform.$cancel()" class="btn btn-default">
            cancel
          </button>
        </form>
        <div class="buttons" ng-show="!rowform.$visible">
          <button class="btn btn-primary" ng-click="rowform.$show()">edit</button>
        </div>  
      </td>
    </tr>
  </table>
</div>

工作示例在这里 http://jsfiddle.net/NfPcH/6493/

感谢。

2 个答案:

答案 0 :(得分:2)

一段时间后,我偶然得到了答案.. :)
我只是错过了Checklist-model directive xeditable要求使清单正常工作!

var app = angular.module("app", ["xeditable", "ngMockE2E",  "checklist-model"]);

雇用它。工作xeditable表与行中的清单。 http://jsfiddle.net/NfPcH/11472/

欢呼声

答案 1 :(得分:0)

通过更改以下代码,它应该可以正常工作。

  

原始代码:e-ng-options="s.value as s.text for s in statuses"> {{ showStatus(user) }}

     

更正后的代码:e-ng-options="s as s.text for s in statuses"> {{ showStatus(user) }}

这对我有用。