2013-12-10 10 views
5

Tôi tương đối mới đối với việc sử dụng thư viện javascript loại bỏ. Tôi đang gặp một vấn đề nhận được một tài sản quan sát được là một đối tượng của một đối tượng khác. Đây là mã của tôi:Các đối tượng lồng nhau loại bỏ Javascript không hoạt động

function Customer(id) { 
    var self = this; 

    self.customer_id = ko.observable(id); 
    self.custnum = -1; 

    self.busname = ko.observable(""); 
    self.address = ""; 
    self.city = ""; 
    self.state_id = ""; 
    self.zipcode = ""; 
    self.cnt_sal_id = ""; 
    self.cnt_first_name = ""; 
    self.cnt_last_name = ""; 
    self.cnt_title = ""; 

    //alert("customer: " + self.customer_id()); 

} 


var CustomerEntryViewModel = function(date) { 
    var self = this; 

    self.last_update = ko.observable(date); 
    self.customer = ko.observable(new Customer("")); 

    self.addCustomer = function (id) { 
     var c = new Customer(id); 
     self.customer = c; 
     alert("New id: " + self.customer.customer_id() + " num: " + c.custnum); 
    } 

    self.customerSearch = function() { 
    } 

    self.editCustomer = function (customer_id) { 
    } 

    self.save = function(customer) {  
    }   
} 

Làm cách nào để liên kết với các thuộc tính trong đối tượng Khách hàng. Tôi cố gắng để sử dụng điển hình javascript ký hiệu dấu chấm như vậy: customer.customer_id

Đây là html mà liên kết dữ liệu:

<div class="field-input" style="margin-bottom:10px;"> 
    <input type="text" id="customer_id" style="width:100%;" 
     data-bind="jqxInput: { placeHolder: 'Customer #', value: 
           customer().customer_id, height: 21, width: 208, 
           minLength: 1, disabled: true }"/> 
</div> 

Trả lời

11

Kể từ customer là một quan sát được, bạn phải tháo vật cuộn tròn lại nó trong bạn ràng buộc. Vì vậy, nó sẽ là một cái gì đó như:

<div data-bind="text: customer().address"></div> 

Và tương tự, điều này

alert("New id: " + self.customer.customer_id() + " num: " + c.custnum); 

sẽ

alert("New id: " + self.customer().customer_id() + " num: " + c.custnum); 
          // ^unrolled 
+0

@ user2864740 - ah, http://knockoutjs.com/documentation/custom-bindings-c này ontrolling-descendant-bindings.html Có vẻ rất tuyệt. Đã thêm vào danh sách đọc của tôi :) –

+0

Adam, cảm ơn bạn đã trả lời. Tin hay không, phần này hoạt động: cảnh báo ("Id mới:" + self.customer.customer_id() + "num:" + c.custnum); Tuy nhiên, cùng một tham chiếu không làm việc trong các ràng buộc html của tôi. – user3088317

-2

Hãy thử điều này, nên rất hữu ích:

<div class="field-input" style="margin-bottom:10px;"> 
    <input type="text" id="customer_id" style="width:100%;" data-bind="value: customer().customer_id, disabled: true" /> 
</div> 
+0

Chào mừng bạn đến với SO, nhưng vui lòng ngừng thêm câu trả lời trùng lặp với các câu trả lời hiện có. – JohnnyHK

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