Theo dõi How to extend multiple elements with Polymer và Polymer multiple inheritence/composition, dựa trên câu trả lời của họ, tôi tự hỏi liệu có thể chia sẻ mixin trên nhiều thành phần web (và nhiều lần nhập) để sử dụng lại chức năng hay không.Có thể chia sẻ mixin trên các thành phần web (và nhập khẩu) trong Polymer không?
Mixins dường như là cách duy nhất để chia sẻ chức năng trên nhiều yếu tố tùy chỉnh. Tuy nhiên, có vẻ như bạn chỉ có thể sử dụng mixin trong một lần nhập. Có nghĩa là, nếu bạn có một mixin, điều đó mang lại cho một thành phần web một chức năng cụ thể (giả sử draggable
), bạn không thể kết hợp nó vào việc xây dựng phần tử Polymer của bạn nếu nó không nằm trong cùng một lần nhập.
Có lẽ tôi đã có một cái gì đó sai, nhưng nếu không, nó cảm thấy như việc sử dụng mixin không phải là rất linh hoạt, bởi vì tôi vẫn không thể chia sẻ chức năng trên các thành phần web.
UPDATE:
Như Scott Miles chỉ trong ý kiến của mình ra, nó là thể sử dụng mixins trong hơn một nhập khẩu. Tôi chỉ không chắc chắn làm thế nào để làm điều đó và nó quay ra, rằng nó rất thẳng về phía trước.
Giả sử chúng ta có một mixin nên được chia sẻ trên nhiều thành phần, nhưng các thành phần được phân phối qua nhiều lần nhập. Tất cả những gì bạn phải làm là xác định mixin trong nhập khẩu riêng của mình trên đối tượng window
. Vì vậy, ví dụ:
shared.html
<script>
window.sharedMixin = {
// shared functionality goes here
};
</script>
Và sau đó, tái sử dụng mixin rằng trong một thành phần trong nhập khẩu khác, cũng đơn giản như nhập khẩu shared.html
.
my-component.html
<link rel="import" href="path/to/shared.html">
Từ thời điểm đó trở đi, sharedMixin
có sẵn như là đối tượng toàn cầu trong nhập khẩu rằng:
Polymer('my-component', Platform.mixin({
// my-component logic
}, sharedMixin);
Tôi hy vọng giúp những người khác. Tôi sẽ viết một bài đăng blog về điều đó và sẽ liên kết nó ở đây.
UPDATE 2
Tôi đã viết một bài đăng blog ở đây: http://pascalprecht.github.io/2014/07/14/inheritance-and-composition-with-polymer/
Tại sao không có mỗi thành phần khai báo một thành phần được chia sẻ Một cái gì đó như http: // www .polymer-project.org/docs/polymer/polymer.html # global. Đây là loại lõi kiểu: https://github.com/Polymer/core-style/blob/master/core-style.html#L11 – ebidel
Bạn nói đúng, điều đó sẽ giải quyết được vấn đề đó. Không nghĩ về 'kiểu lõi' đó thực sự cư xử chính xác như thế. Tôi sẽ cập nhật câu hỏi của mình cho phù hợp. – PascalPrecht
Câu lệnh này 'bạn chỉ có thể sử dụng một mixin trong một lần nhập' là không chính xác. Nhập khẩu không được tự động scoped. –