3

開発アプリで Angular 1.2.0 を使い始めたばかりですが、次の関数が機能しなくなっていることに気付きました。

var myItems = angular.model('myItems', []);

myItems.controller('itemsController', function($scope, $http) {

    // delete item from the database
    $scope.deleteItem = function(id) {
        $http.delete('/api/items/' + id)
            .success(function(data) {
                $scope.items = data;
            })
            .error(function(data) {
                // log error 
            });
    };
});

次に、私の見解では、これがアイテムの削除をトリガーするものです。

<input type="checkbox" data-ng-click="deleteItem(item._id)"> {{ item.text }}

私はAngularに非常に慣れていないので、ここで何がうまくいかないのか正確にはわかりません.Angularリポジトリのバージョン1.2の変更ログファイルを見ても答えが得られませんでした. Angular の経験が豊富な人は、ここで何が問題なのかを説明してもらえますか?

編集: これは、ページが読み込まれるとすぐに表示される Chrome エラー コンソールのログです。チェックボックスをクリックしてアイテムを削除しても何も起こりません。

Error: [$parse:isecprv] http://errors.angularjs.org/undefined/$parse/isecprv?p0=deleteItem(item._id)
at Error (<anonymous>)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:6:453
at ha (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:84:103)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:87:372
at Array.forEach (native)
at q (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:7:261)
at rc (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:87:354)
at Jb.readIdent (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:149:31)
at Jb.lex (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:144:199)
at Ya.parse (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:151:12) <input type="checkbox" data-ng-click="deleteItem(item._id)">

更新: Angular 1.2.0-rc2 (現在最新の安定ビルド) での重大な変更の 1 つは、スコープ チェーンへのプライベート プロパティの導入であることが判明しました。これにより、ドキュメント指向のデータベースにデータを保存する多くのアプリが機能しなくなる可能性がありますMongoDB。この同じ問題に直面している場合は、バージョン1.2.0-rc3 (Google CDNはこちら) に戻るか、変更ログで提案されているように機密性の高い API をクロージャー/コントローラーにラップすることができます。

4

2 に答える 2

0

フィールド名( _id ) を変更してみてください。このエラーは、エラー コンソールから明らかです。

Angular バージョン1.2から

Angular 式でプライベート フィールドを参照することは許可されていません。式: deleteItem(item._id)

アンダースコアで開始または終了する名前を持つフィールドは、プライベート フィールドと見なされます。Angular 式は、スコープ チェーンのそのようなフィールドを参照できません。

詳細情報

于 2013-11-13T06:47:28.110 に答える