使用指令的方法更新控制器的范围

时间:2015-03-20 19:33:24

标签: angularjs angularjs-directive angularjs-scope dropzone.js

如何在指令中使用方法来更新控制器范围内的变量?

我正在使用:Dropzone.jsangular-dropzone.js

Dropzone的一种方法是.getQueuedFiles()。我想使用此方法更新控制器范围中的变量,但它无法正常工作。我希望能够更新控制器范围,以便我可以显示和隐藏内容并将文件数传递给表单中的下一步。

这是角度:

.controller('ImagesCtrl', function($scope) {

  $scope.queuedFiles = 0;

  $scope.dropzoneConfig = {
    init: function() {
      this.on("addedfile", function(file) {
        $scope.queuedFiles = $scope.dropzone.getQueuedFiles().length;
      });
    }
  };

})

这是html:

<form class="dropzone clear"
    method="post"
    enctype="multipart/form-data"
    ng-dropzone
    dropzone="dropzone"
    dropzone-config="dropzoneConfig">
</form>

<div>Queued Files: {{queuedFiles}}</div>

1 个答案:

答案 0 :(得分:0)

这是正确的代码

var app = angular.module('myApp', ['ui.router', 'myApp.controllers']).
    config(['$stateProvider', '$urlRouterProvider',
    function ($stateProvider, $urlRouterProvider) {
        $urlRouterProvider.otherwise('/');

        $stateProvider
        .state('app', {
            url: '/',
            templateUrl: 'admin.html',
            onEnter: function ($stateParams) {
                console.log("Entered Admin route");
            }
            //controller: 'myController'
        })
        .state('sitebinding', {
            url: '/sitebinding',
            templateUrl: 'sitebinding.html'
        })
        .state('scrum', {
            url: '/scrum',
            templateUrl: 'scrum.html'
        });


    }
]);


angular.module('myApp.controllers', []).
controller('myController', function ($scope) {
    $scope.models = {
        helloAngular: 'I work!'
    };

    $scope.$on('$stateChangeStart', function (evt, toState, toParams, fromState, fromParams) {
        console.log('In state change start');
    })
});

这就是问题:当您第二次编写angular.module(&#39; myApp&#39;,[])指定依赖关系以定义控制器时,您将覆盖原始模块。

如果你想添加新东西,你不需要传递依赖数组的现有模块

angular.module(&#39; myModule&#39;)。控制器(&#39; MyCtrl&#39;,功能....