2013-02-06 37 views
7

Tôi đã nhìn thấy đống câu hỏi về điều này và tất cả chúng dường như được giải quyết bằng cách gọi $scope.$apply(), $scope.$digest() hoặc bằng cách kích hoạt phương thức change() trên đầu vào. Nhưng tôi không thể làm cho nó hoạt động với bất kỳ phương pháp nào trong số đó. Trong fiddle này, tôi có thể nhập tên vào hộp và nhận giá trị mô hình để cập nhật khi tôi nhập. Nhưng khi tôi nhấp vào liên kết, để đặt tên đầu vào thành một giá trị nhất định, tôi muốn tên mô hình cần cập nhật. Tôi cần phải làm gì?Mô hình cập nhật JS góc từ dom

Lý do tôi đang cố gắng làm điều này là tôi muốn có thể làm mới mô hình góc của mình khi người dùng tự động điền biểu mẫu, sử dụng tự động điền trình duyệt hoặc LastPass hoặc tương tự. Chắc chắn có một số lệnh góc để làm mới mô hình từ DOM?

http://jsfiddle.net/PXCUq/

$(function() { 
    $('#setFirstName').click(function() { 
     $('input.firstname').val('Test Name'); 
     angular.element($('input.firstname')[0]).scope().$apply(); 
     // Model still not updated 
    }); 
}); 
+0

Có lý do nào mà bạn không thực hiện theo cách này không ?: 'set first name '? –

+0

Tôi đang tìm cách giải quyết để làm cho tự động điền biểu mẫu của trình duyệt hoạt động. Đây là một cách đơn giản hơn để nhận được giá trị thay đổi mà không cần đầu vào của người dùng, để chứng minh sự cố. –

Trả lời

5

Lấy phạm vi, sau đó thay đổi thuộc tính ng mô hình:

$('#setFirstName').click(function() { 
    var scope = angular.element($('input').get(0)).scope() 
    scope.firstname = 'Test Name'; 
    scope.$apply(); 
}); 

Bạn có thể đưa ra một selector jQuery tốt hơn. Tôi chỉ tập trung vào phần Góc.

Fiddle.

+0

Điều này sẽ sắp xếp công việc ... Vì vậy, để làm mới mô hình từ dom, tôi cần phải chạy qua mọi phần tử, lấy thuộc tính ng-model của nó và đặt giá trị mô hình như thế. Có thực sự không có cách nào để làm điều này trong Angular? –

+0

Bạn không cần phải đi qua mọi yếu tố để có được phạm vi của nó. Bạn chỉ nhận được phạm vi một lần. Giống như: 'scope = angular.element ($ ('div [ng-view]> *) [0]). Scope()' – slowpoison

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