angular.js - Jika arahan tersuai bersarang dalam arahan ng-repeat angularjs, kandungan akan dipaparkan secara salah.
漂亮男人
漂亮男人 2017-05-15 16:56:51
0
2
528

senarai_komponen.tpl

<p class="component-list">
    <ul class="nav nav-tabs" id="PlugTabs" role="tablist">
        <li role="presentation" ng-repeat="component_type in component_list" 
            ng-class="{active:$first}">
            <a href="#{{component_type.id}}" role="tab" data-toggle="tab" 
                aria-controls="{{component_type.id}}" aria-expanded="true" 
                ng-bind="component_type.name"></a>
        </li>
    </ul>
    <p class="tab-content" id="PlugContent">
        <p role="tabpanel" class="tab-pane fade active in" 
            ng-repeat="component_type in component_list" 
            ng-class="{active:$first,in:$first}" 
            id="{{component_type.id}}">
            <ul class="list-group">
                <li class="list-group-item" ng-repeat="component_group in component_type.list">
                    <a href="#" class="list-group-header" ng-bind="component_group.name"></a>
                    <p class="boxes">
                        <p se-component></p>
                    </p>
                </li>
            </ul>
        </p>
    </p>
</p>

komponen.tpl

<p class="box" ng-repeat="component in component_group.list" 
    controller="{{component.controller}}" draggable="true">
    <img src="{{component.image}}">
    <label ng-bind="component.name"></label>
</p>

arahan

// se-component-list
Base.directive('seComponentList', function() {
    return {
        restrict: 'E',
        replace: true,
        templateUrl: STATIC_PATH + 'js/seditor/tpls/base.component_list.tpl',
        controller: ['$scope', 'InitBaseData', function($scope, InitBaseData) {
            InitBaseData.getComponentList().success(function(data) {
                if (data && data.code == 0) {
                    $scope.component_list = data.component_list;
                } else {
                    alert('网络异常,请稍后重试');
                }
            }).error(function(err) {
                alert('网络异常,请稍后重试');
            });
        }]
    };
});
// se-component
Base.directive('seComponent', function() {
    return {
        restrict: 'A',
        replace: true,
        templateUrl: STATIC_PATH + 'js/seditor/tpls/base.component.tpl',
        link: function(scope, element, attr) {
            element.bind('drop', function(event) {
                event.preventDefault();
                console.log('drop');
            });
        }
    }
});

Perihalan masalah: Jika saya menggantikan terus kandungan component.tpl dengan <se-component></se-component>, output adalah normal, tetapi saya perlu menambah acara seret untuk komponen. Masalah semasa ialah kandungan yang sepatutnya dipaparkan dalam kotak lain semuanya dipaparkan dalam kotak terakhir Saya baru belajar Angular tidak lama dahulu, tetapi saya tidak dapat mencari jawapannya. terima kasih.

漂亮男人
漂亮男人

membalas semua(2)
仅有的幸福

ng-repeat akan mencipta skopnya sendiri, dan sub-skop perlu
$parent.xxx
untuk mengakses $scope

pengawal

Adalah disyorkan bahawa seComponent anda mendapatkan kandungan dengan menetapkan atribut

<p se-component list="component_type.list"></p>
//具体是不是这样写忘了...,需要验证下,就是这个意思
PHPzhong

Saya mendapati bahawa jika replace:true of se-component dialih keluar, paparan akan menjadi normal, tetapi akan ada teg tambahan bagi <se-component>, yang tidak kelihatan cantik

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan