2011-11-28 26 views
8

Tôi gặp sự cố với công cụ mẫu ẩn danh mới. Nó không thể sử dụng các mẫu lồng nhau. Tôi nhận được lỗi: "Công cụ mẫu này không hỗ trợ các mẫu ẩn danh được lồng trong các mẫu của nó".knockoutjs 1.3PRE "Công cụ mẫu này không hỗ trợ các mẫu ẩn danh được lồng trong các mẫu của nó"

Câu hỏi của tôi: làm cách nào để buộc knockoutJS sử dụng công cụ mẫu jquery chứ không phải công cụ mẫu mới. (Cho đến khi nó cũng hỗ trợ các mẫu lồng nhau tắt khóa học)

Cảm ơn bạn

tử tế nhất mà liên quan Jan

Trả lời

21

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, ifnotwith 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/

+0

+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? –

+0

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. –

+0

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. –

0

Tôi có vấn đề này khi tôi loại bỏ các bao gồm đến tmpl js thư viện nhưng lại thêm nó cố định vấn đề . Bạn có chắc là bạn đã đưa vào thư viện jquery.tmpl.js không?

<script src='..<some path>../jquery.tmpl.js")' type="text/javascript"></script> 

Ngoài ra, tôi bao gồm thư viện tmpl trước và thư viện loại thứ hai. Có lẽ đây là một yếu tố?

Các vấn đề liên quan