0

を使用して AJAX 呼び出しを実行しようとしていngResourceます。以下のコードでは、「a」と「b」の両方が出力されますが、からの AJAX 呼び出しTable.import()は行われません。AJAX 呼び出しを の外に移動すると、onFileRead機能します。何が問題なのですか?

var TableImportController = ['$scope','Table', 'project', 'table',
    function($scope, Table, project, table) {

    $scope.table = table;
    $scope.project = project;

    $scope.onFileRead = function(file) {

        console.log('a');
        Table.import({ data : file.data}, function() {

        }, function() {

        });
        console.log('b');
    };

}];

テーブルはngResource

.factory('Table', function($resource) {
        var Table = $resource('/api/tables/:id:listAction/:itemAction',
            {
                id: '@id',
                listAction: '@listAction',
                itemAction: '@itemAction'
            },
            {
                update: { method: 'PUT' },
                import : { method: 'POST', params: { listAction: 'import' }},

            }
        );

        return Table;
});
4

2 に答える 2

0

$scope.onFileRead を関数として宣言しています。onFileRead の呼び出しとは何ですか? 呼び出しを関数の外に移動すると、初期化の一部として実行されます。入力ファイルを提供するものは何ですか? おそらく、DOM 内の何かから onFileRead 関数にバインドします。

于 2013-07-26T02:10:44.253 に答える
0

私はそれを考え出した。このバグに遭遇したようです: https://github.com/angular/angular.js/issues/2794#issuecomment-18807158

AJAX呼び出しをラップすることで問題を解決しました(そして最終的にonFileReadコールバックがトリガーされる場所に移動しました)scope.$apply(function() { });

于 2013-07-26T13:38:51.490 に答える