AngularJs在一个文件中具有相同名称的多个控制器隔离范围

时间:2015-10-11 21:03:04

标签: javascript angularjs ng-file-upload

一开始我会说我是角色的初学者,我学习它。我计划创建图库系统,用户可以在其中创建多个图库。 我正在使用指令http.get parital编译并为drop图像创建表单。对于一种形式工作不错,但当我添加更多形式我的函数执行多次时。我认为我的逻辑不好或者我做坏事。这是我的指示。

directive("contentControl",function($http,$compile){
    return {
        template: 'Click here',
        link: function(scope, element, attrs) {
            element.bind("click", function () {
                $http.get("/js/angular/File/view/admin/FileUpload.html").then(function(resp) {
                    var html = resp.data;
                    var templateGoesHere = angular.element(document.getElementById('templateGoesHere'));
                    templateGoesHere.append(html);

                    $compile(templateGoesHere)(scope);

                });

            });
        },

    }

模板

<div ng-controller="FileController">
    <button ng-click="upload(files)"></button>
    <form name="myForm">
        <div ngf-drop="add($files)" ng-model="files" class="drop-box clearfix"
             ngf-drag-over-class="dragover" ngf-multiple="true">
            <div ng-repeat="image in images">
                <div class="col-sm-3">
                    <img ngf-thumbnail="!image.file.$error && image.file"
                         ngf-size="{width: 5024, height:200, quality: 0.9}"
                         class="img-responsive">
                </div>
            </div>
        </div>
    </form>
</div>

和控制器

.controller('FileController', function ($scope, Upload) {
        $scope.files = [];
        $scope.images = [];
        $scope.add=function(files)
        {
            console.log(files);
        }
        $scope.upload = function (files) {
            angular.forEach($scope.images,function(file)
            {
        });
            //angular.forEach($scope.images,function(file)
            //{
            //    console.log(file.file);
            //    Upload.upload({
            //        url: '/gallery/create',
            //        fields: {'name': file.file.name}, // additional data to send
            //        file: file.file
            //    });
            //});
        }
    });

我在寻找孤立数据,或者有人可以解释我创建多重图库的更好逻辑

1 个答案:

答案 0 :(得分:2)

这是正常的,因为每次使用该指令时都会生成一个新的http.get。

  1. 使用tempalteUrl获取tempalte。或者,
  2. 删除此指令,然后使用float64&amp; ngInclude在点击元素时包含您的模板。

    ngIf
  3. 在控制器中

    <a href="#" ng-click="showMyTemplate()">Click here</a>
    <div ng-if="showTmp">
       <div ng-include="template.html"/>
    </div>