2013-02-12 14 views
7

करने के लिए वस्तु धर्मान्तरित मैं अपने HTML फ़ाइल में निम्नलिखित है:AngularJS एनजी मॉडल स्ट्रिंग

<td style="width: 200px;"> 
     <span ng-repeat="list in listGroups"> 
      <label for="{{ list.description }}" />{{ list.description }}</label> 
      <input ng-model="$parent.listGroup" id="listGroup-{{ list.value }}" name="listGroups" value="{{ list }}" type="radio" /> 
     </span> 
    </td> 

listGroups शामिल हैं:

[ 
    { 
     "description": "New by Territory", 
     "group": "product", 
     "type": "new" 
    }, 
    { 
     "description": "New by Genre", 
     "group": "genre", 
     "type": "new" 
    }, 
    { 
     "description": "Charts by Territory", 
     "group": "product", 
     "type": "chart" 
    }, 
    { 
     "description": "Charts by Genre", 
     "group": "genre", 
     "type": "chart" 
    } 
] 

जब मैं एनजी में एक रेडियो बटन listGroup (सेट क्लिक करें -model) हो जाता है, उदाहरण के लिए:

{"description":"New by Genre","group":"genre","type":"new"} 

जब मैं typeof $scope.listGroup साथ listgroup को देखो, मैं देख रहा हूँ कि यह एक है अब स्ट्रिंग!

इस प्रकार, मैं शेष HTML पृष्ठ में अन्य बाइंडिंग में इसके गुणों तक नहीं पहुंच सकता।

इस मामले में, मैं ng-show="listGroup.group == 'genre'"

यहाँ क्या हो रहा है और अधिक महत्वपूर्ण बात करना चाहते हैं, कैसे मैं जो है एक वस्तु के रूप वस्तु रखने के यह क्या मैं इसे करना चाहते हैं कर सकता हूँ?

धन्यवाद सभी

डेव

उत्तर

1

क्यों आप एक एनजी-मॉडल के रूप में एक वस्तु है करना चाहते हैं? यही कारण है कि आपकी सूची समूह चर एक स्ट्रिंग बनने का कारण बन रही है, क्योंकि एनजी-मॉडल केवल तारों के साथ काम करता है। आप एक जटिल उद्देश्य यह है कि आप एनजी-मॉडल के साथ उपयोग करना चाहते हैं, तो आप एक निर्देश बना सकते हैं और एक पार्सर और एक फ़ॉर्मेटर, इस तरह लागू करना चाहिए: How to do two-way filtering in angular.js?

4

समस्या यह है कि इनपुट के value विशेषता केवल तार स्वीकार करता है , ऑब्जेक्ट्स (here देखें)। जब आप ऐसा करते हैं: value="{{ list }}", आप मूल रूप से input.value = list.toString() कर रहे हैं।

ng-repeat निर्देश के $index का उपयोग करना एक संभावित कामकाज है। उदाहरण: http://jsfiddle.net/bmleite/cKttd/

+0

इसके अलावा, '$ parent.' का उपयोग न करें, यह आपको भविष्य में समस्याएं ला सकता है। – bmleite

1

अब ng-value का उपयोग करना संभव है।

उदाहरण

<input ng-model="$parent.listGroup" id="listGroup-{{ list.value }}" name="listGroups" ng-value="{{ list }}" type="radio" />

0

तुम भी JSON.parse (वस्तु-इन-स्ट्रिंग), लेकिन मैं मैं @bmleite समाधान बेहतर पसंद सोच सकता है। बस इसे बाहर फेंक दो - किसी के पास एक अलग उपयोग-मामले है।

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