2012-09-17 14 views
10

में $ संसाधन सेवा द्वारा लाया गया था। मेरे पास यह रेल ऐप है जो UserController द्वारा index.html.erb परोसता है। कोणीय नियंत्रक कि उस पृष्ठ संभालती में, मैं उपयोगकर्ताडेटा को बूटस्ट्रैप कैसे करें क्योंकि इसे Angular.js

CoffeeScript

.factory('User', ['$resource', ($resource) -> 
    $resource 'api/users/:user_id/:action', {authenticity_token:app.csrf}, 
    query: 
     method: 'GET' 
     isArray: yes 
    new: 
     method: 'GET' 
     params: 
     user_id: 'new' 
    update: 
     method: 'PUT' 
]) 

के लिए एक $ संसाधन सेवा है और नियंत्रक को हासिल करेगा

window.app = angular.module("app", ['userServices']) 
.config(["$routeProvider", ($routeProvider) -> 
    $routeProvider 
    .when "/users", 
    templateUrl: "assets/templates/users/index.html" 
    controller: UserCtrl 

    .otherwise redirectTo: "/users" 
]) 

# users Controllers 
UserCtrl = ($scope, User) -> 
    User.query (r) -> 
    $scope.users = r 
    # code.. 

मुझे लगता है कि यह एक बहुत आम परिदृश्य है, लेकिन स्पष्ट रूप से इस पृष्ठ के लिए सर्वर पर एक से अधिक यात्राएं लेती हैं। मैं सोच रहा था कि अंगुलर के कुछ बूटस्ट्रैप डेटा का उपयोग करने का कोई तरीका है क्योंकि उन्हें $ संसाधन सेवा में बुलाए गए किसी क्रिया से डेटा वापस कर दिया गया था।

मैंने पहले से ही ग्लोबल वैरिएबल को गॉन रूब गम नामक ग्लोबल वैरिएबल को असाइन करके बूटस्ट्रैप डेटा भाग का ख्याल रखा है। मुझे पता है कि मैं बस $ scope.users = gon.users कर सकता था। लेकिन फिर इन उपयोगकर्ताओं के मॉडल को $ scope.users [0] जैसे niceties नहीं मिलेगा। $ Save()

धन्यवाद!

+0

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

उत्तर

11

यह पता चला है के रूप में, यह वास्तव में आसान है!

उदाहरण के लिए, मान लीजिए कि आपके सभी गैर-कोणीय मॉडल एक परिवर्तनीय _ टास्क और कोणीय $ संसाधन मॉडल कार्य में हैं, आपको बस इतना करना है कि एक-एक करके कन्स्ट्रक्टर फ़ंक्शन में कार्य करें:

$scope.tasks = (new Task(task) for task in _tasks) 
तो

$ scope.tasks में से प्रत्येक के उन सभी $ अद्यतन() होगा, $() पद्धतियों

$scope.tasks[0].$update({due_at: new Date}) 
1

आप User.query से राउंड ट्रिप से बचना चाहते हैं, है ना? यदि हां, तो कैसे इस

<html> 
<script type='text/javascript> 
    initialUsers = <%= User.someRubyMethod.to_json %> 
<script> 
फिर अपने नियंत्रक के अंदर

की तरह कुछ के बारे में

$scope.users = intitialUsers; 
+0

धन्यवाद विल। हां, यही वह है जो मैं अभी कर रहा हूं और यह भी समस्या है: अब वह उपयोगकर्ता के दायरे में मॉडल मॉडल का उपयोग करता है, लेकिन प्रत्येक उपयोगकर्ता मॉडल में $ अपडेट, $ सेव, $$ $ संसाधन के साथ $ डिलीट नहीं होगा। लेकिन मुझे एक रास्ता मिल रहा है, मैं इसे जल्द ही उत्तर के रूप में पोस्ट करूंगा –

+0

क्या आपको कभी ऐसा करने का कोई तरीका मिला? – schultzter

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