Một vài điều mà sẽ giúp rõ ràng điều này:
- Nếu bạn tham khảo jquery.tmpl.js trước Knockout.js, sau đó KO sẽ thiết lập các jQueryTmplTemplateEngine làm mặc định.
- jQueryTmplTemplateEngine không hỗ trợ các mẫu ẩn danh. Điều này có nghĩa là bạn không thể sử dụng các liên kết dòng điều khiển như
foreach
, if
, ifnot
và with
trong đó. Bạn vẫn có thể sử dụng liên kết mẫu (bao gồm các mẫu lồng nhau).
- Bạn có thể kiểm soát công cụ mẫu mặc định bằng cách gọi
ko.setTemplateEngine()
. Bạn sẽ chuyển một phiên bản của công cụ mà bạn muốn sử dụng như ko.setTemplateEngine(new ko.nativeTemplateEngine)
- Bạn cũng có thể chuyển công cụ mẫu tới mẫu liên kết trong thông số
templateEngine
.
Vì vậy, đối với trường hợp của bạn, bạn có thể muốn loại bỏ tham chiếu đến jquery.tmpl.js, để công cụ mẫu gốc đang được sử dụng theo mặc định. Công cụ mẫu gốc hỗ trợ các mẫu lồng nhau (ẩn danh hoặc được đặt tên).
Mẫu nhanh hiển thị mẫu có tên với mẫu ẩn danh bên trong mẫu bằng cách sử dụng công cụ mẫu gốc: http://jsfiddle.net/rniemeyer/GXFYB/
Nguồn
2011-11-28 14:26:52
+1 - câu trả lời hay hơn tôi! Tuy nhiên, nó là công bằng để nói, rằng có những hạn chế/vấn đề tương thích ngược với động cơ mẫu knockout mới. Ví dụ, kéo và thả mẫu của bạn (http://www.knockmeout.net/2011/05/dragging-dropping-and-sorting-with.html) làm việc với công cụ mới vì nó dựa vào các tham số truyền trong mẫu Kết nối dữ liệu? –
Có, có một số thay đổi cần thiết. Việc kéo và thả từ bài đăng sử dụng 'tmplItem' là một khái niệm mẫu jQuery, nhưng có thể được thay thế dễ dàng. Nó cũng sử dụng 'templateOptions', không hỗ trợ hiện tại trong các mẫu gốc. Tôi sẽ xem xét việc tạo ra một mẫu được cập nhật bằng cách sử dụng cú pháp mới và xem liệu tôi có thể tìm cách để làm sạch nó hơn nữa không. –
Tôi có khả năng sẽ đăng bài này hoặc thêm ghi chú vào bài đăng blog, nhưng đây là hai mẫu trong 1.3: http://jsfiddle.net/rniemeyer/JEe2x/ và http://jsfiddle.net/rniemeyer/HzNuS/ . Tôi đã làm sạch chúng một chút và bọc các mẫu liên kết để làm cho nó càng đơn giản càng tốt để thêm ràng buộc. –