5

Bir öğede bir görev gerçekleştiren özel bir yönergem var myDirective. http://jsfiddle.net/hGnvv/ sadece ng-if koşul doğru döner benim $http istekleri yüklenir sonra:ng-if içinde AngularJS yönergesi çalıştırılamıyor

Bir ng-if bloğunda bu keman gibi

<div ng-if="condition"> 
    <div my-directive></div> 
</div> 

şey bu direktif var.

Yönerge, çalışma zamanı sırasında muhtemelen derlenmiş, ancak hiçbir zaman bağlı olmadığından kod asla çalışmaz. ng-if'u ng-show ile değiştirirseniz, yönerge düzgün çalışır.

Herhangi bir çözüm?

Edit: ng-show'u kullanamıyorum çünkü form içinde 130 yönergeye sahibim. Yine de 20 yönerge koşuyor, diğeri ise nesne türüne göre çalışıyor.

  • ng-if="type == 1"

    sonra ng-show için ng-if değiştirirseniz o zaman vb

diğer unsurları yüklemek bu öğeleri

  • ng-if="type == 2"
  • yük form yerine 1s yüklemek için 8s sürer.

    +4

    için nesne özelliği kullanmalıdır demek ng-if="myvalue.item" Zaten bir çözümün var.Ng-if ile değiştirin – nikhil

    +0

    Bunu yapamam, tek bir formda 130 direktif var. Eğer ng-show ile ng-if 'i değiştirirsem, çalışması gereken tüm bu kod, formu çok daha yavaş (~ 1s yerine 8s) döndürür. –

    +2

    Mümkünse ng-show kullanın. Ng-öğesi DOM'den kaldırırsa, açısal olarak derlemenin hiçbir yolu yoktur. –

    cevap

    2

    Sorun, yönergesinin çalışmadığı, ancak içinde bulunduğum $watch işlevinin hiç çalışmadığıydı. Sorunun tam nedenini anlamadım, çünkü aynı yönerge ng-if dışında gayet iyi çalışıyor.

    Her neyse $watch ->$watchCollection öğemi değiştirdim ve şu anda iyi çalışıyor, çünkü tüm güncelleştirmeleri izlediğim nesneler için görüyorum. örneğin

    2

    ng-if durumu başlangıçta yanlıştır, bu nedenle öğe DOM'de bulunmaz ve yönerge bağlanmamıştır. düğmesi tıklandığında true ng-if ayarlanması

    : http://jsfiddle.net/q05gret0/

    sonra true ng-if ayarlama koşulu sonra true olur Bu örneklerde görüldüğü gibi eğer ng-link geri arama doğru kovmalıyım

    $http istek yükleniyor: http://jsfiddle.net/fhu8ky62/1/

    Bu davranışı almıyorsanız, sorun devralınan bir kapsamda olabilir; ng-if'un isteğinizin güncellenmekte olduğu kapsam değişkenini izlediğini kontrol edin. This article, ebeveyn/çocuk kapsamı değişken gölgeleme ve diğer sınırlamalarla ilgili birkaç noktayı içerir.

    +0

    ng-if koşulu doğru olduğunda kodu çalıştırmak istiyorum. Sorun, doğru olduğunda direktifin bağlantısının çalışmadığıdır. –

    +0

    Ah Şimdi anlıyorum, cevabımı düzenler – seanhodges

    +0

    Yardımın için teşekkürler, sorun bu değildi. Onu bulmayı başardım, aşağıda başka bir cevapta yazdım. –

    0

    modeliniz $scope.item = true gibidir ve size $scope.myvalue = {} için modelini değiştirmek ve bunun gibi kullanmalıdır ng-if="item" gibi kullanırsanız: hiç sana ng-if değil, basit bir değere