사용자 지정 지시문을 ng-repeat에 동적으로 바인딩

CurlyFro

내 컨트롤러에는 내 양식에 대한 json이 있고 양식 요소를 생성하기 위해 반복되는 지시문이 있습니다. 지시문에 전달 된 '유형'에 따라 지시문은 요소를 렌더링하는 방법을 알아야합니다.

하지만 여기서 양식 템플릿을 제대로 렌더링하지 않는 이유는 모르겠지만 별도의 문제입니다.

내 즉각적인 문제는 ng-model을 전달하고 템플릿에 올바르게 바인딩하는 것을 볼 수 없다는 것입니다.

누가 내 문제를 봅니까?

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

myApp.directive('ioProductElement', ['$compile', function ($compile) {
    var dropdownTemplate = '<select ng-model="model" ng-options="option.Text for option in data"></select>';
    var textAreaTemplate = '<textarea ng-model="model" class="form-control">{{ data }}</textarea>';
    var radioListTemplate = '<span ng-repeat="item in data.Items"><input ng-model="model" type="radio" name="{{ data.Name }}" ng-checked="item.Selected" /><label>{{ item.ProductLabel }}</label>&nbsp;&nbsp;</span>';

    return {
        restrict: 'E',
        replace: true,
        scope: {
            model: '=',
            type: '=',
            data: '='
        },
        link: function (scope, element) {
            var getTemplate = function (type) {
                var template = '';
                switch (type) {
                    case 'SelectListItem':
                        template = dropdownTemplate;
                        scope.model = _.find(scope.data, {
                            Selected: true
                        });
                        break;
                    case 'TextArea':
                        template = textAreaTemplate;
                        break;
                    case 'RadioList':
                        template = radioListTemplate;
                        break;
                }
                return template;
            };

            element.html(getTemplate(scope.type));
            $compile(element.contents())(scope);
        }
    };
}]);

myApp.controller('DynamicFormController', function () {
    this.productElement = {};
    this.product = {
        ProductName: 'Online Form',
        Company: 'TEST',
        Data: []
    };
    this.productItems = [{
        ProductLabel: "Status",
        ProductType: "SelectListItem",
        ProductData: [{
            "Text": "Item1",
                "Value": "1",
            Selected: true
        }, {
            "Text": "Item2",
                "Value": "2"
        }]
    }, {
        ProductLabel: "Publication",
        ProductType: "SelectListItem",
        ProductData: [{
            Text: 'Item1',
            Value: '1'
        }, {
            Text: 'Item2',
            Value: '2',
            Selected: true
        }]
    }, {
        ProductLabel: "Caption",
        ProductType: "TextArea",
        ProductData: "this is some data for the textarea"
    }, {
        ProductLabel: "Display Advertising",
        ProductType: "RadioList",
        ProductData: {
            Name: "classifiedAdvertising",
            Items: [{
                Text: 'Full Page',
                Selected: true
            }, {
                Text: '1/2 Page'
            }]
        }
    }, {
        ProductLabel: "Status2",
        ProductType: "SelectListItem",
        ProductData: [{
            "Text": "Item1",
                "Value": "1"
        }, {
            "Text": "Item2",
                "Value": "2"
        }, {
            "Text": "Item3",
                "Value": "3",
            Selected: true
        }]
    }, ];

    this.save = function () {
        this.product.Data = this.productItems;
        console.log('in save', this.product);
    };
});
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.4.0/lodash.min.js"></script>    
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">

<div class="col-sm-12" ng-app="myApp">
    <br />
    <form class="form-horizontal" ng-controller="DynamicFormController as ctrl">
        <div class="form-group" ng-repeat="item in ctrl.productItems">
            <label class="col-sm-2 control-label">{{ item.ProductLabel }}</label>
            <div class="col-sm-10">
                <io-product-element data-model="ctrl.productElement[item.ProductLabel]" data-type="item.ProductType" data-data="item.ProductData"></io-product-element>
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <input type="button" class="btn btn-info" data-ng-click="ctrl.save()" value="Submit" />

                 product: {{ ctrl.product | json }}
            </div>
        </div>
    </form>
</div>

Dardino

첫 번째 switch case에 break 문을 추가하려면

//[...]
switch (type) {
    case 'SelectListItem':
        template = dropdownTemplate;
        scope.model = _.find(scope.data, {
            Selected: true
        });
        break;
     case 'TextArea':
        template = textAreaTemplate;
        break;
     case 'RadioList':
        template = radioListTemplate;
        break;
}
//[...]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사용자 지정 지시문을 호스트에 바인딩

분류에서Dev

각도 사용자 지정 지시문 ng-show 양방향 바인딩이 작동하지 않음

분류에서Dev

사용자 지정 지시문에서 양방향 바인딩에 ng-model과 사용자 지정 특성 사용의 차이점

분류에서Dev

보기에서 사용자 지정 바인딩으로 논리 이동

분류에서Dev

ng-model 지시문과 값 속성을 텍스트 상자에 대해 동일한 속성으로 바인딩하면 한자가 지워집니다.

분류에서Dev

ng-repeat에서 동적 필드 이름이있는 사용자 지정 지시문

분류에서Dev

자식을 반복하지 않고 AngularJS에서 ng-repeat로 부모를 바인딩하는 방법

분류에서Dev

자식을 반복하지 않고 AngularJS에서 ng-repeat로 부모를 바인딩하는 방법

분류에서Dev

ng-click을 사용자 지정 지시문에 바인딩하고 부모 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

사용자 지정 지시문에서 개체 배열의 ng-repeat가 작동하지 않습니다.

분류에서Dev

Angular ng-repeat는 동적으로 생성 된 배열의 데이터를 바인딩하지 않습니다.

분류에서Dev

내 사용자 지정 속성 지시문에서 데이터 바인딩이 작동하지 않는 이유

분류에서Dev

사용자 지정 각도 지시문의 ng-switch가 양방향 바인딩을 중단합니다.

분류에서Dev

ng-repeat를 수행하고 html에 다시 반영되지 않는 작업을 수행하는 동안 html에서 지시문에 범위를 바인딩

분류에서Dev

지시문을 사용하여 Angular JS에서 모델 바인딩을 동적으로 변경 하시겠습니까?

분류에서Dev

AngularJS에서 'ng'로 사용자 지정 지시문을 접두사로 지정하는 것이 좋습니까?

분류에서Dev

AngularJs 지시문 : ng-repeat 요소에 속성을 동적으로 설정하는 방법

분류에서Dev

지시문이 ng-repeat 루프에 있으면 지시문의 바인딩 이벤트가 작동하지 않습니다.

분류에서Dev

지시문이 ng-repeat 루프에 있으면 지시문의 바인딩 이벤트가 작동하지 않습니다.

분류에서Dev

Knockout 사용자 지정 바인딩에 옵션으로 배열 전달

분류에서Dev

AngularJS 사용자 정의 생성 지시문 동적 속성 바인딩

분류에서Dev

Angular2에서 ngModel없이 양방향 바인딩으로 사용자 지정 지시문을 작성하는 방법

분류에서Dev

ng-model을 사용자 지정 지시문에 전달하고 작동시키는 문제

분류에서Dev

repeat.for의 개체를 사용자 지정 요소에 바인딩

분류에서Dev

null 사용자 지정 바인딩에 빈 문자열

분류에서Dev

(명시 적 바인딩) 해결 논리 사용자 지정 및 "찾을 수 없음"동작 사용자 지정

분류에서Dev

모난. 내부에 ng-repeat가있는 사용자 지정 지시문

분류에서Dev

사용자 지정 바인딩에서 적절한 종속성 추적

분류에서Dev

사용자 지정 특성 지시문 및 데이터 바인딩 특성 지시문에서 @Attribute 사용

Related 관련 기사

  1. 1

    사용자 지정 지시문을 호스트에 바인딩

  2. 2

    각도 사용자 지정 지시문 ng-show 양방향 바인딩이 작동하지 않음

  3. 3

    사용자 지정 지시문에서 양방향 바인딩에 ng-model과 사용자 지정 특성 사용의 차이점

  4. 4

    보기에서 사용자 지정 바인딩으로 논리 이동

  5. 5

    ng-model 지시문과 값 속성을 텍스트 상자에 대해 동일한 속성으로 바인딩하면 한자가 지워집니다.

  6. 6

    ng-repeat에서 동적 필드 이름이있는 사용자 지정 지시문

  7. 7

    자식을 반복하지 않고 AngularJS에서 ng-repeat로 부모를 바인딩하는 방법

  8. 8

    자식을 반복하지 않고 AngularJS에서 ng-repeat로 부모를 바인딩하는 방법

  9. 9

    ng-click을 사용자 지정 지시문에 바인딩하고 부모 함수를 호출하는 방법은 무엇입니까?

  10. 10

    사용자 지정 지시문에서 개체 배열의 ng-repeat가 작동하지 않습니다.

  11. 11

    Angular ng-repeat는 동적으로 생성 된 배열의 데이터를 바인딩하지 않습니다.

  12. 12

    내 사용자 지정 속성 지시문에서 데이터 바인딩이 작동하지 않는 이유

  13. 13

    사용자 지정 각도 지시문의 ng-switch가 양방향 바인딩을 중단합니다.

  14. 14

    ng-repeat를 수행하고 html에 다시 반영되지 않는 작업을 수행하는 동안 html에서 지시문에 범위를 바인딩

  15. 15

    지시문을 사용하여 Angular JS에서 모델 바인딩을 동적으로 변경 하시겠습니까?

  16. 16

    AngularJS에서 'ng'로 사용자 지정 지시문을 접두사로 지정하는 것이 좋습니까?

  17. 17

    AngularJs 지시문 : ng-repeat 요소에 속성을 동적으로 설정하는 방법

  18. 18

    지시문이 ng-repeat 루프에 있으면 지시문의 바인딩 이벤트가 작동하지 않습니다.

  19. 19

    지시문이 ng-repeat 루프에 있으면 지시문의 바인딩 이벤트가 작동하지 않습니다.

  20. 20

    Knockout 사용자 지정 바인딩에 옵션으로 배열 전달

  21. 21

    AngularJS 사용자 정의 생성 지시문 동적 속성 바인딩

  22. 22

    Angular2에서 ngModel없이 양방향 바인딩으로 사용자 지정 지시문을 작성하는 방법

  23. 23

    ng-model을 사용자 지정 지시문에 전달하고 작동시키는 문제

  24. 24

    repeat.for의 개체를 사용자 지정 요소에 바인딩

  25. 25

    null 사용자 지정 바인딩에 빈 문자열

  26. 26

    (명시 적 바인딩) 해결 논리 사용자 지정 및 "찾을 수 없음"동작 사용자 지정

  27. 27

    모난. 내부에 ng-repeat가있는 사용자 지정 지시문

  28. 28

    사용자 지정 바인딩에서 적절한 종속성 추적

  29. 29

    사용자 지정 특성 지시문 및 데이터 바인딩 특성 지시문에서 @Attribute 사용

뜨겁다태그

보관