วิธีที่ถูกต้องในการรวมปลั๊กอิน jQuery ใน AngularJS


217

ฉันสงสัยว่าวิธีที่ถูกต้องในการรวมปลั๊กอิน jQuery เข้ากับแอพเชิงมุมของฉันคืออะไร ฉันได้พบบทช่วยสอนหลายอย่างและการฉายหน้าจอ แต่ดูเหมือนว่าจะรองรับปลั๊กอินที่เฉพาะเจาะจง

ตัวอย่างเช่น: http://amitgharat.wordpress.com/2013/02/03/an-approach-to-use-jquery-plugins-with-angularjs/ http://www.youtube.com/watch?v=8ozyXwLzFYs

ฉันควรสร้างคำสั่งเช่นนั้น -

App.directive('directiveName', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            $(element).'pluginActivationFunction'(scope.$eval(attrs.directiveName));
        }
    };
}); 

แล้วใน html เรียกสคริปต์และคำสั่ง?

<div directiveName ></div>
<script type="text/javascript" src="pluginName.js"></script>

ขอบคุณล่วงหน้า


4
ใช่วิธีที่ดีที่สุดคือห่อ jQuery plugin ที่ต้องการภายในคำสั่งเพื่อให้คุณได้รับประโยชน์จากตัวแปรขอบเขตและควบคุมการเริ่มต้น / การเรียกใช้เมธอด
Bhaskara Kempaiah

ฉันไม่รู้ว่าฉันรู้สึกอย่างไรกับเหตุการณ์ที่เกิดขึ้น ... ได้ยินการฝึกฝนที่ไม่ดี
sksallaj

1
มันควรจะ$(element).pluginActivationFunction(scope.$eval(attrs.directiveName));ไม่มีคำพูด
Maxim Zubarev

คำตอบ:


143

ใช่คุณถูกต้อง. หากคุณกำลังใช้ปลั๊กอิน jQuery อย่าวางโค้ดไว้ในคอนโทรลเลอร์ แทนที่จะสร้างคำสั่งและวางรหัสที่ปกติคุณจะมีอยู่ภายในlinkฟังก์ชั่นของคำสั่ง

มีสองจุดในเอกสารที่คุณสามารถดูได้ คุณสามารถค้นหาได้ที่นี่:
ข้อผิดพลาดทั่วไป

ใช้ตัวควบคุมอย่างถูกต้อง

ตรวจสอบให้แน่ใจว่าเมื่อคุณอ้างถึงสคริปต์ในมุมมองของคุณคุณอ้างถึงล่าสุด - หลังจากอ้างอิง angularjs ไลบรารีตัวควบคุมบริการและตัวกรองแล้ว

แก้ไข: แทนที่จะใช้$(element)คุณสามารถใช้angular.element(element)เมื่อใช้ AngularJS กับ jQuery


1
วิธีการเกี่ยวกับพารามิเตอร์ของปลั๊กอิน jQuery ซึ่งอนุญาตเนื้อหา HTML (ตัวอย่างเช่นหากฉันต้องการเพิ่มng-clickคำสั่งผ่านพารามิเตอร์ HTML ข้อความธรรมดานี้)
Fractaliste

1
@Fractaliste ไม่แน่ใจว่าคุณหมายถึงอะไร คุณยกตัวอย่างได้ไหม
callmekatootie

คุณสามารถอธิบายสิ่งที่จะทำ $ (องค์ประกอบ) ทั้งหมด 'pluginActivationFunction' (ขอบเขต. $ eval (attrs.directiveName)); หมายถึงอะไร
Gaurav_soni

ฉันเกือบจะเป็นมือใหม่ทั้งหมดของ angularjs ฉันพยายามใช้ปลั๊กอิน jquery หลายอันและไม่ทำงานเลย เราจำเป็นต้องทำสิ่งนี้จริงๆเหรอ? พวกเขาไม่สามารถทำงานร่วมกับ angularjs ได้หรือไม่ มันฟังดูแปลกใจสำหรับฉัน
Moebius

ทำไมสคริปต์ต้องมาล่าสุด
Mike R

0

ฉันมีสถานการณ์ 2 ครั้งที่คำสั่งและบริการ / โรงงานไม่เล่นได้ดี

สถานการณ์คือฉันมี (มี) คำสั่งที่มีการฉีดการพึ่งพาของบริการและจากคำสั่งที่ฉันขอให้บริการเพื่อทำการโทร ajax (ด้วย $ http)

ในท้ายที่สุดในทั้งสองกรณี ng-Repeat ไม่ได้ยื่นเลยแม้ว่าฉันจะให้ค่าเริ่มต้นอาร์เรย์

ฉันยังพยายามที่จะทำให้คำสั่งกับตัวควบคุมและขอบเขตที่แยก

เฉพาะเมื่อฉันย้ายทุกอย่างไปยังตัวควบคุมและทำงานได้เหมือนเวทมนตร์

ตัวอย่างเกี่ยวกับที่นี่การเริ่มต้นปลั๊กอิน jQuery (RoyalSlider) ใน Angular JS

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.