AngularJS không chạy khi load bằng AJAX từ partial view

Hôm nay team mình làm một project của khách hàng liên quan đếm AngularJS.
Cả bọn chỉ tìm hiểu sơ lược về framework này nên làm tới đâu học tới đó, làm tới đâu thì ăn…bug tới đó. Hôm nay ăn phải con bug khá là ngu nhưng cũng nhờ nó mà cả team thêm tí kiến thức về AngularJS.
Số là từ trang chính, người dùng click lên một cái hyperlink thì nó sẽ load một cái partial view bằng AJAX. Trên partial view đó các thẻ html element như input, select bind dữ liệu bằng AngularJS.
Ớ! Nhưng mà sao nó chẳng chịu bind dữ liệu gì cả, nó còn hiển cả cấu trúc AngularJS lên. Mất gần hai giờ đồng hồ ngồi xà quần, cả bọn mới phát hiện ra là khi load đóng html của partial view bằng AJAX thì AngularJS cần được kích lại hay boostrap nó thì nó mới hiểu mã code của partial view của chúng ta.
Vì sao phải cần như thế nhỉ? Vì framework AngularJS đã được load từ trang chính và nó làm hết mọi việc cần thiết cho cây html của trang chính và sau đó nó nghỉ ngơi sau khi xong hết mọi việc. Nên khi có html mới từ partial view trả về thì ta phải goi nó dạy làm việc tiếp đi chớ ^^
angularjs
Đoạn mã sau sẽ giúp chúng ta giải quyết được vấn đề.
<script>

    angular.element(document).ready(function () {

        angular.bootstrap($("#appElement"), ['myApp']); // appElement là thẻ html mà chúng ta định nghĩa ng-app is the html element on which you define ng-app, myApp là tên của ứng dụng   

});

</script>

Các bạn nhớ đặt đoạn mã trên vào sự kiện sau khi ajax load partial view xong.

source: gockinhnghiem.com
Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

1 nhận xét:

  1. Borgata Hotel Casino & Spa - Mapyro
    Hotel 강릉 출장안마 Lobby. Borgata 서산 출장안마 Hotel Casino & Spa is one 아산 출장샵 of New Jersey's 충청남도 출장안마 largest casinos and has become one of New Jersey's premier resort destinations. 시흥 출장샵

    Trả lờiXóa