*This is a form in razor / mvc5 project*
*Summery:* I'm trying to make multiple "sub-forms" that can be added to the 
form and they all have an file upload script with them.
Problem is, as far I can notice that the cloned part of angular DOM is not 
initializing/compiling. Just a heads up - I'm still new to angularjs so I 
tried a lot of reading a googling before I posted.

*OrderForm.cshtml* Part that im cloning is a form table .form-group and 
.multiple-form-group :
<div class="row">
    <div class="col-xs-12" >
        <div class="form-group multiple-form-group" data-max=99>
            
*<div class="form-group input-group"> <!-- part of code here I'm trying to 
clone -->*
*                <table class="inputtable" >*
*                    <tr>*
*                        <td id="tableId0" width="0%">*
*                           ... *
*                        </td>*
*                        <td width="14%">*
*                            ...*
*                        </td>*
*                        ......*
*                    </tr>*
*                    <tr class="dropdown-menu" id="uploadTableMain" 
name="0" style="width:100%;">*
*                        <td id="uploadPlaceHolder" width="100%" 
ng-include="'/Content/Order/_Upload.html'"></td> <!-- i tred to call this 
part again when it gets cloned, usually just the rendered part is cloned 
(_Upload.html) and the upload buttons are not working -->*
*                    </tr>*
*                </table>*

*                <span class="input-group-btn">*

*                    <button type="button" id="addNewSubOrderBtn" name="0" 
class="btn btn-default btn-add">+</button>*


*                </span>*
*<!-- up to here -->*
*            </div> *
        </div>
    </div>
</div>

*_Upload.html *
<div class="container" ng-controller="FileUploadCtrl">

    <div class="container row">
        <div class="col-xs-2 fileupload-buttonbar">
            <div class="col-lg-push-2 btn-group-vertical">
                <span class="btn btn-success fileinput-button">
                    <i class="glyphicon glyphicon-plus"></i>
                    <input type="file" name="file" 
data-url="FileContents/Upload"
                           multiple upload><span>Add files...</span>
                </span>

                <span type="submit" class="btn btn-primary" 
ng-click="upload()">
                    <i class="glyphicon glyphicon-upload"></i>
                    Upload
                </span>
                <span class="btn btn-warning" ng-click="remove()">
                    <i class="glyphicon glyphicon-remove"></i>Remove All
                </span>
            </div>

        </div>
        <!-- The table listing the files available for upload/download -->
        <div class="col-xs-10">
            <span ng-if="!files.length">No files selected</span>
            <table>
                <tr ng-repeat="file in files">
                    <td width="40%">{{file}}</td>
                    <td width="10%">{{file.size}}</td>
                    <td width="50%">
                        <div class="progress" ng-show="percentage">
                            <div class="bar" style="width: 
{{percentage}}%;"></div>
                        </div>
                    </td>
                </tr>
            </table>


        </div>
    </div>


</div>


*appscript.js* (part that is cloning when the ) 
 $(function () {
       
        var addFormGroup = function (event) {
            $("#uploadTableMain.dropdown-menu").each(function (i, obj) {
                $(obj).removeClass('open');
                $(obj).hide();
                

            });
            event.preventDefault();
            
            var $formGroup = 
angular.element($(this).closest('.form-group'));
            var $multipleFormGroup = 
angular.element($formGroup.closest('.multiple-form-group'));
            var $formGroupClone = angular.element($formGroup).clone();

            $(this)
                .toggleClass('btn-default btn-add btn-danger btn-remove')
                .html('&ndash;');
            $(this).attr("style", "display: inline-block;");
            $formGroupClone.find('input').val('');
            $formGroupClone.insertAfter($formGroup);
            
//$formGroupClone.find('button#addNewSubOrderBtn.btn.btn-default.btn-add').attr("style",
 
"display: inline-block;");
            var $lastFormGroupLast = 
$multipleFormGroup.find('.form-group:last');
            if ($multipleFormGroup.data('max') <= 
countFormGroup($multipleFormGroup)) {
                $lastFormGroupLast.find('.btn-add').attr('disabled', true);
            }

            $formGroupClone.find('#id').val(NewGuid());

            $formGroupClone.find('div.btn-group.fullwidth:last').remove();

            $formGroupClone.find('.multiselect').multiselect({
                numberDisplayed: 1,
                enableFiltering: true,
                enableCaseInsensitiveFiltering: true,
                filterPlaceholder: 'Søg...',
                nonSelectedText: 'Vælg produkt',
                nSelectedText: 'valgt'
            });
            //var upl123 = $formGroupClone.find('#uploadPlaceHolder');
            //upl123.html();//("<ng-include 
src=\"'/Content/Order/_Upload.html'\">"));
            //var injector = angular.injector(['ng']);
            
            //"$compile", function ($compile) {
            //    var scope = angular.element(upl123).scope();
            //    $compile(upl123)(scope);
            //}
            //]);
            //upl123.html("<ng-include 
src=\"'/Content/Order/_Upload.html'\" ></ng-include>")
            
            
            $('.datetimepicker').datetimepicker({
                format: 'DD.MM.YYYY. HH:mm',


            });
            $('[id^="tableId"]').each(function (i, obj) {
                $(obj).attr("id", "tableId" + i);
            });
            $('[name^="uplBtnTo"]').each(function (i, obj) {
                $(obj).attr("id", i);
            });
            $('tr#uploadTableMain.dropdown-menu').each(function (i, obj) {
                $(obj).attr("name", i);
            });

            $('[id^="productType"]').each(function (i, obj) {
                $(obj).attr("name", "ProductType" + i);

            });
            $('[id^="addNewSubOrderBtn"]').each(function (i, obj) {
                $(obj).attr("name", i);

            });

            
                
            
        };



*app.js *(angularjs script) - that is actually a file upload script

(function () {
    'use strict';

    var app = angular.module('app', []);



    app.controller('FileUploadCtrl',
    ['$scope', '$rootScope', 'uploadManager',
    function ($scope, $rootScope, uploadManager) {
        $scope.files = [];
        $scope.percentage = 0;
        $scope.dotheshow = true;
        $scope.upload = function () {
            uploadManager.upload();
            $scope.files = [];
        };
        $scope.remove = function () {
            $scope.files = [];
        };

        $rootScope.$on('fileAdded', function (e, call) {
            $scope.files.push(call);
            $scope.$apply();
        });

        $rootScope.$on('uploadProgress', function (e, call) {
            $scope.percentage = call;
            $scope.$apply();
        });
    }]);

    app.factory('uploadManager', function ($rootScope) {
        var _files = [];
        return {
            add: function (file) {
                _files.push(file);
                $rootScope.$broadcast('fileAdded', file.files[0].name);
            },
            clear: function () {
                _files = [];
            },
            files: function () {
                var fileNames = [];
                $.each(_files, function (index, file) {
                    fileNames.push(file.files[0].name);
                });
                return fileNames;
            },
            upload: function () {
                $.each(_files, function (index, file) {
                    file.submit();

                });
                this.clear();
            },
            setProgress: function (percentage) {
                $rootScope.$broadcast('uploadProgress', percentage);
            }
        };
    });

    app.directive('upload', ['uploadManager', function 
factory(uploadManager) {
        return {
            restrict: 'A',
            link: function (scope, element, attrs) {
                $(element).fileupload({
                    dataType: 'text',
                    add: function (e, data) {
                        uploadManager.add(data);
                    },
                    progressall: function (e, data) {
                        var progress = parseInt(data.loaded / data.total * 
100, 10);
                        uploadManager.setProgress(progress);
                    },
                    done: function (e, data) {
                        uploadManager.setProgress(0);
                    }
                });
            }
            
        };
    }]);

 


-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to