2013-08-14 29 views
97

Tôi đang tìm kiếm cách filters hoạt động trong Angularjs và tôi thấy rằng chúng tôi cần gửi 2 bộ ngoặc đơn.Hai bộ ngoặc đơn sau khi gọi hàm

$filter('number')(number[, fractionSize]) 

Điều đó có nghĩa là gì và chúng tôi xử lý nó bằng JavaScript như thế nào?

+4

Cá nhân tôi thấy cú pháp này khó hiểu/vụng về để đọc cũng . Nhưng bạn có thể sử dụng cú pháp đơn giản hơn để truy cập các bộ lọc AngularJS như được mô tả ở đây: http://stackoverflow.com/a/14303362/1418796 –

+0

Tôi lấy angularjs như một ví dụ. Tôi muốn biết cách xử lý điều này nếu tôi tự tạo một hàm. – L105

Trả lời

218

Điều đó có nghĩa là hàm đầu tiên ($filter) trả về một hàm khác và sau đó hàm trả về được gọi ngay lập tức. Ví dụ:

function add(x){ 
    return function(y){ 
    return x + y; 
    }; 
} 

var addTwo = add(2); 

addTwo(4) === 6; // true 
add(3)(4) === 7; // true 
+2

Cảm ơn, giờ tôi đã hiểu. – L105

+1

Bạn đang chào đón @ L105. – Paulpro

+1

Câu trả lời thú vị! Vì vậy, rõ ràng một khi bạn hiểu nó, nhưng không ngay lập tức rõ ràng cú pháp khôn ngoan. – HartleySan

5

Nó cũng giống như thế này:

var func = $filter('number'); 
func(number[, fractionSize]); 

Chức năng $filter() trả về một con trỏ đến chức năng khác.

+2

là từ khóa dành riêng – eyelidlessness

+0

@eyelidlessness: cảm ơn vì đã bắt được điều đó. –

13

$filter('number') trả về một hàm chấp nhận hai đối số, yêu cầu đầu tiên (số) và thứ hai là tùy chọn (kích thước phân số).

Có thể ngay lập tức gọi hàm trả về:

$filter('number')('123') 

Ngoài ra, bạn có thể giữ cho chức năng quay trở lại để sử dụng trong tương lai:

var numberFilter = $filter('number'); 

numberFilter('123') 
+5

Nhờ bất cứ ai quyết định dv câu trả lời này, lý do làm như vậy eludes tôi. –

+0

trong trường hợp này, nơi đặt .catch để nhận lỗi? – stackdave

+0

@stackdave bạn đang cố gắng giải quyết những gì? –

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