2013-04-19 14 views
6

बाकी एपीआई से पुनर्प्राप्त उपयोगकर्ताओं की एक सूची है। यहाँ टेम्पलेटangularjs ng-repeat सूची को अद्यतन नहीं किया जाता है जब तत्व जोड़ा/हटाया जाता है

<div ng:controller="UserController"> 
    <a ng-click="createUser()">Create User</a> 

    <div ng-view> 
     <ul> 
      <li ng-repeat="user in users"> 
       {[{user.first_name}]} {[{user.last_name}]} 
      </li> 
     </ul> 
    </div> 
</div> 

जे एस है:

function UserController($scope, User, Group){ 
    $scope.users = User.query(); 

    $scope.createUser = function(){ 

     //$scope.users = null; 
     //$scope.users.pop(); 
     //$scope.users.push(new User({id:'5'})); 

     console.log($scope.users); 
    } 
} 

सेवा: http://dpaste.com/1065440/

सभी उपयोगकर्ताओं के पास लिया गया और सही ढंग से सूचीबद्ध। समस्या यह है कि मैं प्रस्तुत सूची में हेरफेर नहीं कर सकता। कोई फर्क नहीं पड़ता कि मैं क्या धक्का, पॉप या शून्य करने के लिए सेट करते हैं। सूची टेम्पलेट में नहीं बदलती है। हालांकि अंतिम लॉग विवरण परिवर्तन दिखाता है, यह प्रिंट करता है उदा। नल जब उपयोगकर्ता सरणी शून्य पर सेट है।

कोई विचार जहां समस्या है?

+0

आप createUser() कहां कॉल कर रहे हैं? आपको क्वेरी() में कॉलबैक फ़ंक्शन जोड़ने की आवश्यकता होगी, फिर कॉलबैक के अंदर createUser() को कॉल करें। –

+0

क्षमा करें मुझे वह बटन याद आया। मैंने अपना प्रश्न संपादित किया। –

+0

मेरा उत्तर जांचें, मैंने आपके द्वारा पोस्ट की गई नई जानकारी के प्रकाश में संपादित किया है। – finishingmove

उत्तर

5

वस्तु आप सरणी में धक्का, User

function UserController($scope, User){ 

    $scope.users = User.query(); 

    $scope.createUser = function(){ 
     $scope.users.push(new User({first_name:'Bob', last_name: 'Schmitt'})); 
    } 
} 

तो का एक उदाहरण होना चाहिए हमारी बातचीत से new User({})

उपयोग करते हैं, ऐसा लगता है समस्या मार्ग में था। उसी बाहरी नियंत्रक को आंशिक को सौंपा गया था जिसे ng-view में लोड किया जा रहा था। ng:controller="UserController" को हटाने और आंशिक रूप से createUser बटन को हल करने से समस्या हल हो जाएगी, लेकिन अगर विधि ng-view से बाहर की विधि को कॉल करने की ज़रूरत है, तो उससे संबंधित सभी डेटा बाहरी नियंत्रक में होने की आवश्यकता होगी। इसलिए, आप अपने बाहरी नियंत्रक को वैसे ही रख सकते हैं, और खाली प्लेसहोल्डर नियंत्रक का उपयोग करने के लिए अपना मार्ग बदल सकते हैं।

+0

नए उपयोगकर्ता का प्रभाव क्या है? क्या यह एपीआई कॉल करता है? मैंने आपके सुझाव की कोशिश की लेकिन यह अभी भी काम नहीं करता है। –

+0

यह उस ऑब्जेक्ट को बनाता है जिसे आप सरणी में उपयोगकर्ता के उदाहरण के रूप में दबाएंगे, जिससे यह सभी उदाहरण विधियों जैसे $ सेव आदि को प्राप्त करता है। संक्षेप में: उपयोगकर्ता व्यवहार को इससे जोड़ता है। – finishingmove

+0

और क्या आपका एनजी-दोहराना कुछ भी प्रदर्शित करता है? @artworkad シ – finishingmove

3

सुनिश्चित करें कि createUser कहा जा रहा है। आईई एनजी-क्लिक या कुछ।

<button type="button" ng-click="createUser()">Create User</button> 

आपका पुश फ़ंक्शन सही दिखता है, लेकिन HTML में आपका बाध्यकारी गलत दिखता है। यह डबल घुंघराले ब्रैकेट होना चाहिए।

<li ng-repeat="user in users"> 
    {{user.first_name}} {{user.last_name}} 
</li> 

जोड़ा गया उदाहरण मैंने पहले ऑब्जेक्ट जोड़ने पर उपयोग किया है।

<div ng-app="main"> 
    <div ng-controller="MyCtrl"> 
     <button ng-click="add()" >Add</button> 
     <div id="container"> 
      <div ng-repeat="test in tests>{{test.name}}</div> 
     </div> 
    </div> 
</div> 


$scope.tests = {}; 

$scope.add = function() { 
    var newTest = {name: 'Test Message'}; 

    $scope.tests.push(newTest); 
}; 
+0

मुझे उस जानकारी को याद आया, मैं कस्टम घुंघराले का उपयोग करता हूं और मैंने बस उस बटन को याद किया। अगली बार सही होगा। –

+0

आह, मुझे कोई समस्या नहीं दिखाई देती है, तो क्या आपने यह देखने के लिए अपने createUser फ़ंक्शन के अंदर ब्रेक पॉइंट सेट किए हैं, फिर यह हिट करने के लिए स्क्रीन पर उपयोगकर्ता ऑब्जेक्ट को प्रिंट करने का प्रयास करें। {{users}} –

+0

ठीक है। मेरा अद्यतन प्रश्न देखें। –

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