我刚开始在我的开发应用程序中使用 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(当前最新的稳定版本)中的一项重大变化是在作用域链上引入了私有属性。这可能会破坏许多将数据存储在面向文档的数据库中的应用程序,例如在我的案例MongoDB
中。如果您遇到同样的问题,您可以暂时返回到版本1.2.0-rc3 (此处为Google CDN ),或者按照更改日志中的建议将敏感 API 包装在闭包/控制器中。