you should $compile your html. you can do this by injecting the $compile to
a controller, or if you want to do it straight after your jquery
manipulation, use this:
$(".yor class").each(function () {
var content = $(this);
angular.element(document).injector().invoke(function ($compile) {
var scope = angular.element(content).scope();
$compile(content)(scope);
});
});
On Tuesday, February 10, 2015 at 11:12:58 PM UTC+2, [email protected] wrote:
>
> *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('–');
> $(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.