我在AngularJS中遇到一个问题,当时不想使用$ scope,而是在传递给$ resource。$ save()作为参数的回调函数中使用控制器。
控制器代码如下所示。此代码无效,因为$ save函数的匿名回调函数中未定义vm。这是我不明白的。
正如你所看到的,有3行注释掉了$ scope.groupuploader ...如果我取消注释这些行并注释掉以vm.groupuploader开头的3行...那么它确实按预期工作。
顺便说一下,流对象来自我们正在使用的图像上传库ng-flow。
显然,使用$ scope代替vm工作。但是,由于我们试图不在任何地方使用$ scope,我们也试图在这里使用vm。
任何人对提案的解释如何解决?
非常感谢提前和最好的问候 塞巴斯蒂安
Angular Controller代码:
angular.module('xyz')
.controller('CreategroupController', CreategroupController);
function CreategroupController($scope, $location, BaseUrl, UserService, GroupResource) {
var vm = this;
vm.groupName = '';
vm.groupDescription = '';
vm.groupImageUrl = 'http://localhost:3000/assets/images/add_group_image_wide.png';
// this does not work
vm.groupuploader = {};
// this does work
//$scope.groupuploader = {};
vm.create = function () {
if (!vm.groupName) {
return;
}
var newGroup = new GroupResource({name: vm.groupName, description: vm.groupDescription});
newGroup.$save(function(newGroup) {
// this does not work
vm.groupuploader.flow.opts.target = BaseUrl.url + '/service/group/' + newGroup.id + '/image' + '?X-AUTH-TOKEN=' + UserService.retrieve();
vm.groupuploader.flow.upload();
// this does work
//$scope.groupuploader.flow.opts.target = BaseUrl.url + '/service/group/' + newGroup.id + '/image' + '?X-AUTH-TOKEN=' + UserService.retrieve();
//$scope.groupuploader.flow.upload();
$location.path('/group/' + newGroup.id + '/addmembers');
});
};
}