2013-05-14 7 views
29

controller में मैं पालन किया है तरीके:कोणीय में HTML से फैक्टरी विधियों को कैसे कॉल करें?

var isPaused = false; 

$scope.switcher = function (booleanExpr, trueValue, falseValue) { 
    return booleanExpr ? trueValue : falseValue; 
}; 

$scope.isPaused = function() { 
    return isPaused; 
}; 

और मैं जैसे HTML से यह कॉल कर सकते हैं:

<body ng-controller="Cntrl"> 

... 
<h4> 
{{ switcher(isPaused(), 'Search Address Mode', 'Search Location Mode')}} 
</h4> 
<div class="btn-group"> 
    ...  
</div> 

जैसा कि आप देख अगर isPaused() रिटर्न false मैं <h4>Search Location Mode</h4>

प्राप्त यह उपयोगिता इसलिए है मैं इसे factory

के रूप में परिभाषित करना चाहता हूं

कोई अपवाद लेकिन

जब मुझे यह पसंद है कॉल करने के लिए प्रयास करें:

<h4> 
{{ switcher.sw(isPaused(), 'Search Address Mode', 'Search Location Mode')}} 
</h4> 
<div class="btn-group"> 
    ...  
</div> 

कुछ नहीं होता।

** मैंने 'switcher' नियंत्रक को जोड़ा।

मैं HTML से फ़ैक्टरी विधि कैसे कॉल कर सकता हूं?

(* आप बदल/मेरे सवाल को संपादित करने का स्वागत करते हैं, तो यह स्पष्ट नहीं लगता है)

धन्यवाद,

+0

आपने इसे पूरा करने के लिए कैसे प्रबंधित किया? मुझे एक ही समस्या है ... हो सकता है कि मुझे यह सब कुछ ऐसा नहीं करना चाहिए – trainoasis

+0

@ user1524316 अच्छी तरह से, –

+0

से नीचे उत्तर देखें, मैंने सोचा कि यह आपके प्रश्न को पूरी तरह से हल नहीं करता है मंजूर नहीं? – trainoasis

उत्तर

52

ठीक है, तुम सच में है कि क्या करना चाहिए नहीं कर रहे हैं ... लेकिन आप क्या कर सकते हैं अपनी सेवा ऑब्जेक्ट को अपने $ स्कोप पर किसी संपत्ति में डाल दिया गया है, और उसे वहां से कॉल करें।

app.controller('MyCtrl', function($scope, switcher) { 
    $scope.switcher = switcher; 
}); 
+3

स्वीकार क्यों नहीं किया गया? क्या यह गन्दा लगता है? आपका समाधान काम करता है। यह सवाल है कि 'नियंत्रक' को 'स्विचर' पहचानकर्ता प्राप्त होने पर मुझे '$ scope.switcher' बनाने की आवश्यकता क्यों है।धन्यवाद –

+7

एचटीएमएल विचार केवल नियंत्रक से जुड़े हो सकते हैं ($ स्कोप चर का उपयोग कर) या निर्देशों के साथ विस्तारित। कोई अन्य तरीका एक कोणीय तरीका नहीं है :) – Chandermani

+0

@Chandermani मैं इस विधि का उपयोग कई नियंत्रकों में करता हूं और फैक्ट्री या सेवा बनाने का आसान/छोटा तरीका है। –

3

मेरे पास एक और सामान्य सवाल था, "पेज लोड पर एचटीएमएल से एंजुलरज स्कोप/कारखाना/सेवा कैसे कॉल करें।" मेरा समाधान एनजी-शो के भीतर विधि को कॉल करना था।

  1. प्रश्न में संदर्भ आसपास के उच्चतम तत्व में
  2. कॉल विधि एनजी शो निर्देशों का उपयोग।
  3. विधि पृष्ठ को प्रदर्शित करने से पहले चलती है।
  4. ध्यान रखें कि आप इस तरह एक समाधान का उपयोग कर सकते हैं (यह एक बिखरे हुए प्रतिपादन में भागों चलती की संख्या को कम कर सकते हैं)

<div ng-show="runThisMethod(someVarOnScope)" .....>

सुनिश्चित करें कि बूटस्ट्रैपिंग काम एक पृष्ठ प्रदर्शित करने से पहले समाप्त हो गया है बनाने के लिए
संबंधित मुद्दे