如何从另一个angularjs调用范围函数?

时间:2016-11-08 16:17:22

标签: javascript angularjs html-table

我有一张充满数据的表格; 我有一个删除行的按钮, 我有输入字段显示来自表格中所选行的数据。

首先我必须选择该行...然后输入字段r填充来自同一行的数据....一旦我完成了,我可以按删除...并且行被删除...现在已经选中了已删除行下面的行...(我可以更改为不是)...但已删除行中的旧值仍在输入字段中...

现在我必须做点什么...... 2个选项:

  1. 将所选行设置为null,并清除所有输入字段...(我不知道该怎么做...)

  2. 使用新选择的行并将其数据填入输入字段......在我看来,这是更好的方式...

  3. 所以请帮助我,这是代码:

    在我的html文件中,我有这个:

    <p>ID</p>
    <input ng-model="student.id">
    <p>Name</p>
    <input ng-model="student.firstname">
    <p>Last Name</p>
    <input ng-model="student.lastname">
    
    <button ng-click="deleteStudent(student)">Delete Student</button>
    
    
        <table name="tableStud" arrow-selector>
            <tbody>
                <tr>
    
                    <td>ID</td>
                    <td>First Name</td>
                    <td>Last Name</td>
                    <td>From</td>
                </tr>
    
                <tr ng-repeat="student in result"
                    ng-class="{'selected':$index == selectedRow}"
                    ng-click="setSelected(student,$index)">
                    <td>{{ student.id }}</td>
                    <td>{{ student.firstname }}</td>
                    <td>{{ student.lastname }}</td>
                    <td>{{ student.mestorodjenja.ime }}</td>
    
                </tr>
    
            </tbody>
        </table>
    

    我有一个控制器....用这个:

    $scope.deleteStudent = function(student) {
        $http.post('http://localhost:8080/CreditCardWEB/rest/cc/delete',
                student).success(function(data) {
            $scope.result.splice($scope.selectedRow, 1);
    
        });
    
    };
    
    $scope.selectedRow = null;
    
    $scope.setSelected = function(student, index) {
        $scope.student = student;   
        $scope.selectedRow = index;
    };
    

2 个答案:

答案 0 :(得分:0)

我认为如果你添加一行来设置selectedRow并且学生在后期成功时为空是一个好的开始。

$http.post('http://localhost:8080/CreditCardWEB/rest/cc/delete',
    student).success(function(data) {
        $scope.result.splice($scope.selectedRow, 1);
        $scope.selectedRow = null;
        $scope.student = null;
});

除此之外,如果selectedRow不为空,我建议您只显示表单。

这样的事情:

<div ng-show="selectedRow !== null">
    <p>ID</p>
    <input ng-model="student.id">
    <p>Name</p>
    <input ng-model="student.firstname">
    <p>Last Name</p>
    <input ng-model="student.lastname">
    <button ng-click="deleteStudent(student)">Delete Student</button>
</div>

答案 1 :(得分:0)

您可以在删除后更新学生:

$scope.result.splice($scope.selectedRow, 1);
$scope.student = $scope.result[0]; 

或者,如果您只想更新一些属性,例如firstname: $ scope.student.firstname = $ scope.result [0] .firstname;