9

Vì vậy, tôi không thể tìm ra cách sử dụng thuộc tính typeahead-loading để hiển thị một spinner trong khi typeahead của tôi lấy dữ liệu từ xa. Tôi không thể tìm thấy bất kỳ ví dụ về việc sử dụng nó ở bất cứ đâu.Sử dụng bootstrap góc và ui

Giá trị đó có phải là thứ chúng ta cần đặt theo cách thủ công trong phạm vi khi chúng tôi bắt đầu yêu cầu không? và sau đó đặt thủ công thành false khi yêu cầu hoàn tất? Đôi khi có ma thuật với những điều góc cạnh và tôi không bao giờ chắc chắn nếu một cái gì đó thêm đang xảy ra trên back-end để xử lý một số trong những điều này.

Chỉ cần một ví dụ đơn giản về cách sử dụng giá trị trong tải trọng đánh máy sẽ tốt đẹp. Tôi không thể nghĩ cách sử dụng nó một cách chính xác. Tất nhiên nhiều tài liệu hướng dẫn góc thiếu các ví dụ tốt cho một số tính năng phức tạp hơn.

+0

Đây không phải là kỹ thuật và câu trả lời cho câu hỏi của bạn, nhưng đề xuất cho một phương pháp khác hoàn toàn. Tôi không thực sự thích sử dụng một spinner/div/span/etc bên ngoài. Tôi thích chỉ sử dụng placeholder = "{{someScopeVar}}" và typeahead-on-select = "onSelect ($ item, $ model, $ label)" trong thẻ đầu vào typeahead, khởi tạo $ scope.someScopeVar thành "loading .. "trong bộ điều khiển, sau đó sử dụng chức năng onSelect để thay đổi $ scope.someScopeVar thành văn bản giữ chỗ thông thường như" Tìm kiếm theo tên ". –

Trả lời

16

Theo tôi, tài liệu không rõ ràng về điều này: "Liên kết với biến [...]". Vì vậy, bạn chỉ cần chỉ định một biến trong phạm vi hiện tại của bạn sẽ được đặt thành true trong khi tra cứu đang chạy. Dưới đây là một ví dụ rất ngớ ngẩn chỉ để hiển thị whats xảy ra:

function MainController($scope) { 
    $scope.lookup = function() { 
    console.log("isLoading is " + $scope.isLoading); 
    return []; 
    } 
} 

<div ng:controller="MainController"> 
    <input type="text" ng:model="search" 
    typeahead="result for result in lookup($viewValue)" 
    typeahead-loading="isLoading"></input> 
    isLoading: {{isLoading}} 
</div> 

Nếu bạn chạy này và gõ một cái gì đó vào tìm kiếm, bạn sẽ nhận thấy rằng sản lượng là "isLoading: false". Tuy nhiên trên giao diện điều khiển javascript bạn sẽ thấy rằng trong khi hàm tra cứu đang chạy, $ scope.isLoading được đặt thành true.

Vì vậy, chỉ cần chỉ định một biến trong phạm vi của bạn với typeahead nạp và sau đó bạn có thể làm một cái gì đó như thế này:

<div ng:show="!!isLoading">loading...</div> 
+0

Cảm ơn, mọi thứ đã có ý nghĩa hơn bây giờ. Ví dụ tốt – bjo

3

Không cần phải đi qua một chức năng (tôi không, dù sao):

<input ng-model="search" typeahead="result for result in lookup($viewValue)" 
    typeahead-loading="is_loading"> 

<!-- change class (or something) when lookup is loading --> 
<span ng-class="{'loading-class': is_loading}">Hey, I'm loading!</span> 
+0

Bạn đã bỏ lỡ lý do tại sao ví dụ của tôi đã sử dụng một hàm. –

+0

Tôi thấy, bạn chỉ đang sử dụng một chức năng để in trên bảng điều khiển? – MFB

+0

Giải pháp tuyệt vời, làm việc như một sự quyến rũ! – devo