2013-05-14 22 views
29

ben takip ettim yöntemleri:Angularjs içinde HTML'den fabrika yöntemleri nasıl aranır? <code>controller</code> yılında

var isPaused = false; 

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

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

Ve gibi HTML diyebilirsin: Eğer isPaused() döner ben <h4>Search Location Mode</h4>

olsun false olmadığını görmek üzere

<body ng-controller="Cntrl"> 

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

Bu yardımcı program nedenle Bunu factory

olarak tanımlamak istiyorum

İstisna yok ama

Sevdiğim demeyi deneyin

:

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

hiçbir şey olmuyor.

** Denetleyiciye 'switcher' ekledim.

HTML'den fabrika yöntemini nasıl çağırabilirim?

teşekkür ederiz

+0

Bunu nasıl başarabildiniz? Benzer bir sorunum var… Belki de tüm bunları şu şekilde yapmamalıyım – trainoasis

+0

@ user1524316 iyi, –

+0

'un altında verilen cevaba bakınız. kabul edilmedi? – trainoasis

cevap

52

Eh, gerçekten bunu yapmak zorunda değilsin, (net değil gibi görünüyor eğer * Sen/değiştirmek sorumu düzenlemek için hoşgeldin) ... ama ne can, hizmet nesnesini $ kapsamınızdaki bir özelliğe yerleştirir ve oradan çağırır.

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

Neden olmasın? dağınık görünüyor mu? Çözümünüz çalışıyor. Sorunun nedeni, "controller" anahtarlayıcının tanımlayıcısını alırsa '$ scope.switcher 'oluşturmam gerekiyor.Teşekkürler –

+7

HTML görünümleri yalnızca Denetleyiciye ($ scope değişkenini kullanarak) veya Direktiflerle genişletilebilir. Başka bir yol açısal bir yol değildir :) – Chandermani

+0

@Chandermani Bu yöntemi birkaç kontrolörde kullanıyorum ve kolay/kısa yol fabrika veya servis yaratmak. –

3

ben daha genel bir soru vardı "Nasıl sayfa yüklemesinde html gelen angularjs kapsam/fabrika/hizmet aramak için." Benim çözümüm, ng-show içindeki yöntemi çağırmaktı. Söz konusu bağlam çevreleyen yüksek elemana

  1. ,
  2. Çağrı ng-show yönergesini kullanarak yöntemi.
  3. Yöntem, sayfayı görüntülemeden önce çalışır.
  4. ayrıca

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

(bu dağınık render hareketli parçaların sayısını azaltabilir) önyükleme çalışma sayfasını görüntüleyen önce bitmiş olduğundan emin olmak için böyle bir çözümü kullanabilirsiniz Not
İlgili konular