2012-08-13 13 views
13

के साथ टूटता है I AngularJs को एक उदाहरण नोडजेस एप्लिकेशन में एकीकृत करने पर काम कर रहा हूं।एंगुलरज कॉफ़ीस्क्रिप्ट फ़ंक्शन अभिव्यक्ति

UsersCtrl = ($scope, $http) ->  
    $scope.newUser = {} 
    $scope.users = [ 
    name: "aloman" 
    email: "[email protected]" 
    ] 

जो जावास्क्रिप्ट में संकलित:

// Generated by CoffeeScript 1.3.3 
(function() { 
    var UsersCtrl; 

    UsersCtrl = function($scope, $http) { 
    $scope.newUser = {}; 
    return $scope.users = [ 
     { 
     name: "aloman", 
     email: "[email protected]" 
     } 
    ]; 
    }; 
}).call(this); 

कोड कंसोल लॉग के साथ टूट जाता है इसके बाद के संस्करण:
त्रुटि: मेरे नियंत्रक इस प्रकार है तर्क 'UsersCtrl' नहीं एक समारोह है अपरिभाषित, गया

हालांकि संकलित जावास्क्रिप्ट के चारों ओर लिपटे अज्ञात फ़ंक्शन को ठीक करना ठीक काम करता है। कार्य कोड नीचे दिखाया गया है।

var UsersCtrl; 
Usersctrl = function($scope, $http) { 
    $scope.newUser = {}; 
    $scope.users = [{ 
     name: "aloman", 
     email: "[email protected]" 
    }]; 
}; 

मेरा संकलित कोड काम नहीं कर रहा है। मुझे एहसास के दायरे इंजेक्शन के साथ यह महसूस करना है। मैं AngularJS 1.0.1 का उपयोग कर रहा

उत्तर

38

यह सबसे अच्छा होगा इस वाक्य रचना का उपयोग करें ताकि आप वैश्विक क्षेत्र को प्रदूषित नहीं है: उस के बावजूद

angular.module('myApp').controller('MyController', ($scope) ->)

+2

यह करने का यह सही तरीका है। – btford

+0

मैं 'angular.module ('myModuleName') का उपयोग कर रहा हूं। नियंत्रक ('MyControllerName', ($ scope) ->)' – vansanblch

+0

मुझे लगता है कि मैं इस पोस्ट को संपादित कर दूंगा ताकि लोगों को वैश्विक चर बनाने के लिए प्रोत्साहित नहीं किया जा सके (उन गड़बड़ परीक्षण खराब) –

0

सभी मौजूदा उत्तर दिए गए हैं वहीं एक 3 है विकल्प:

जब आप जावास्क्रिप्ट को कॉफीस्क्रिप्ट संकलित करते हैं तो सुनिश्चित करें कि आप कॉफीस्क्रिप्ट कंपाइलर को --bare विकल्प सेट करें, जिससे वह आउटपुट में फ़ंक्शन रैपर को छोड़ देता है।

+2

ऐसा करने से सब कुछ वैश्विक दायरे में डाल दिया जाएगा, जो आमतौर पर एंगुलरजेएस दस्तावेज़ों में बुलाया जाता है (लेकिन विशेष रूप से अपने ट्यूटोरियल या बीज प्रोजेक्ट के नियंत्रकों में नहीं किया जाता है - लेकिन निर्देश, फ़िल्टर और सेवाओं के लिए है)। – Todd

+0

मैं सहमत हूं कि यह नहीं किया जाना चाहिए, कारण से (टोड द्वारा ऊपर वर्णित वैश्विक दायरे को अनावश्यक रूप से प्रदूषित करना) –

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