(1) Tôi có một chỉ thị transcluding được gọi là portlet
lấy nội dung của nó và kết thúc nó trong một số mã soạn sẵn. Ví dụ:AngularJS: Làm thế nào để transclude nhiều chỉ thị?
<portlet>
<div class="foobar">My content</div>
</portlet>
đi qua các mẫu của portlet
, đó là:
<div class="portlet">
<div class="icon"></div>
<div class="content" ng-transclude="">
</div>
</div>
Và trở thành:
<div class="portlet">
<div class="icon"></div>
<div class="content">
<div class="foobar">My content</div> <!--the original content
passed to portlet-->
</div>
(2) tôi có thêm hai chỉ thị, dyn-form
và dyn-form-field
. Được mô tả theo cách này:
<dyn-form>
<dyn-form-field type="textbox" placeholder="..." label="Name" />
<! ...and so on... -->
</dyn>
dyn-form
's mẫu:
<form class="..." ng-transclude="">
</form>
Mỗi dyn-field
' mẫu s tạo ra html để sản xuất nhãn/lĩnh vực cho nó. Vì vậy, các mã ban đầu được dịch sang một cái gì đó như thế này:
<form class="...">
<label>Name: <input type="text" placeholder="..." /></label>
<!- ....and so on... -->
</form>
(3) Dưới đây là vấn đề. Tôi muốn sử dụng chỉ thị thứ 3, dyn-form-portlet
để tạo mã boilerplate để hiển thị một số nút được hiển thị phía trên mọi biểu mẫu, sau đó hiển thị một portlet và đặt dyn-form
bên trong portlet. Đây là cách tôi đang cố gắng để làm điều này:
<dyn-form-portlet>
<dyn-form>
<dyn-form-field />
</dyn-form>
</dyn-form-portlet>
dyn-form-portlet
's trông như thế này:
<div class="dyn-form-portlet">
<button>Foo</button>
<button>Bar</button>
<portlet ng-transclude="">
</portlet>
</div>
Theoratically này nên làm việc, tức là <dyn-form>
nên được đặt bên trong <portlet>
, <dyn-form-field>
s bên <dyn-form>
, v.v. Nhưng khi tôi chạy điều này, tôi chỉ thấy các nút được hiển thị bởi dyn-form-portlet
và mã cho portlet
, nhưng portlet
trống và biểu mẫu không được hiển thị trong đó.
Tôi đang làm điều gì đó sai, hoặc đây có phải là lỗi không?
Thực hiện một plunk nếu có ai đó quan tâm: http://plnkr.co/edit/FUYCQbw8Tnx3Qhcj4108?p=preview Nếu bạn loại bỏ transclude: true từ portlet, nó hoạt động nhưng tôi không chắc chắn về các tác động. –
Đây là những gì tôi tin rằng nó đang xảy ra. Chỉ thị '' bên trong khuôn mẫu 'dyn-form-portlet' được biên dịch bởi Angular trước khi chỉ thị được liên kết, do đó khi' dyn-form-portlet' được xử lý, thẻ 'portlet' trong khuôn mẫu của nó đã được trả về. Hãy xem [Plunker] này (http://plnkr.co/edit/szuDxjGPB8id2yrto7zM?p=preview) và kiểm tra đầu ra của bàn điều khiển. Không biết đây có phải là lỗi hay chỉ là hành vi tự nhiên của Góc trong trường hợp này. –
@MichaelBenford Đó thực sự là những gì dường như đang xảy ra, tuy nhiên nó có vẻ giống như một lỗi. Ý tôi là, tất cả các chỉ thị phụ bên trong 'dyn-form' được chuyển đổi thành' dyn-form', vậy tại sao nó lại khác với 'dyn-form-portlet' và' dyn-form'? Bất cứ ai có thể báo cáo điều này như là một lỗi cho nhóm AngularJS? –