2012-06-15 38 views
10

Tôi đã sau đối tượng Knockout.js:Knockout.js - làm thế nào để tôi nhận được giá trị của một thuộc tính quan sát được bên trong một quan sát được tính toán?

var viewModel = { 
    description : ko.observable(""), 
    Name : ko.observable(""), 
    productid : ko.observable(""), 
    productmodel : ko.observable(""), 
    productnumber : ko.observable(""), 
    text_relevance : ko.observable(""), 
    mydunamicfield : ko.computed(function() { 
     return "bq=(and " + 
      ((this.description == "") ? "" : ("description:" + this.description + " ")) + 
      ")"; 
    } , this) 
}; 

Nhưng mydunamicfield tài sản không sản xuất các kết quả nối chính xác. Nếu tôi cố gắng tham khảo this.description() bên trong chức năng khác, tôi thấy các thông báo lỗi sau khi trang được tải:

Property 'description' of object [object Window] is not a function 

vấn đề trong trường hợp này là gì?

Trả lời

13

Trước hết, bạn phải tham chiếu this.description làm this.description() nếu bạn muốn nhận được giá trị của nó.

Thứ hai, hãy thử đặt trường computed của bạn bên ngoài của bạn viewModel (như 'this'viewModel bản thân không được xác định tại thời điểm bạn tạo computed thể quan sát được.

Xem http://jsfiddle.net/rAEqK/2/ cho một ví dụ làm việc.

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