角度控制器作为vm在$ resource中不可用。$ save回调函数,只有$ scope

时间:2015-04-19 13:16:57

标签: javascript angularjs angularjs-scope angularjs-controller angularjs-resource

我在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');
        });
    };
}

0 个答案:

没有答案