2013-12-10 7 views
5

मैं नॉकआउट जावास्क्रिप्ट लाइब्रेरी के उपयोग के लिए अपेक्षाकृत नया हूं। मुझे एक अवलोकन योग्य संपत्ति मिल रही है जो किसी अन्य वस्तु का एक वस्तु है। यहां मेरा कोड है:जावास्क्रिप्ट नॉकआउट बाइंडिंग नेस्टेड ऑब्जेक्ट्स काम नहीं कर रहे हैं

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) {  
    }   
} 

मैं ग्राहक ऑब्जेक्ट में गुणों के लिए बाध्यकारी कैसे हो सकता हूं। मैं तो जैसे विशिष्ट जावास्क्रिप्ट डॉट नोटेशन का उपयोग करने का प्रयास करें: customer.customer_id

यहाँ एचटीएमएल कि डेटा बांधता है:

<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> 

उत्तर

11

customer के बाद से एक मानने योग्य है, तो आप में इसे उतारना करने के लिए है अपने बाइंडिंग। तो यह होगा कुछ की तरह:

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

और इसी तरह, इस

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

होगा

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

@ user2864740 - आह, यह http://knockoutjs.com/documentation/custom-bindings-c ontrolling-descendant-bindings.html वास्तव में अच्छा लगता है। मेरी पढ़ने की सूची में जोड़ा गया :) –

+0

एडम, प्रतिक्रिया के लिए धन्यवाद। मानो या नहीं, यह हिस्सा काम करता है: चेतावनी ("नई आईडी:" + self.customer.customer_id() + "num:" + c.custnum); हालांकि, वही संदर्भ मेरे एचटीएमएल बाइंडिंग में काम नहीं करता है। – user3088317

-2

इस प्रयास करें, सहायक होना चाहिए:

<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

SO में आपका स्वागत है, लेकिन कृपया उन उत्तरों को जोड़ना बंद करें जो मौजूदा लोगों को डुप्लिकेट करते हैं। – JohnnyHK

संबंधित मुद्दे