Soru sindirmek sağlar: İki kontrolörleri Köpek ve Kedi var. Eğer köpek ismini değiştirirsem, o zaman $ digest döngüsü çalışır ve Cat ayrıca {{ctrl.getTime()}} kullanımı yöntemi nedeniyle buradaki görünümü de günceller. Bu, tüm denetleyicileri yükleyen ve ng-if veya state kullanmayan büyük uygulamalar için büyük bir sorundur. Mevcut uygulamasında biz şablonları içine yöntemleri kullanmak ve ne olay kötü biz yüklemek ve tüm uygulama denetleyicileri ve ilk etabından durumlarını veya kullanmayan yerlerde bir sürü var ng-eğer, sadece ng-gösteriyi kullanın. Ben daha iyi bir çözüm özelliklerini kullanmayı ne olduğunu biliyorum, ama ben $ için açısal anlatmak yerine tüm uygulama kapsamları tek DogCtrl kapsamını sindirmek mümkün olduğunu acaba?angularjs tek geçerli kapsamı
HTML
<div ng-app="myApp">
<div ng-controller="DogCtrl as ctrl">
<h3>DogCtrl</h3>
Dog name: <input ng-model="ctrl.name" />{{ctrl.name}}
</div>
<hr />
<div ng-controller="CatCtrl as ctrl">
<h3>CatCtrl</h3>
Cat getTime: {{ctrl.getTime()}} {{ctrl.random}}
</div>
</div>
JavaScript
var myApp = angular.module('myApp',[]);
myApp.controller('DogCtrl', DogCtrl);
myApp.controller('CatCtrl', CatCtrl);
function DogCtrl() {
this.name = 'Doggy';
}
function CatCtrl() {
this.getTime = function() {
return new Date().getTime();
}
}
Fiddle:
<div ng-controller="CatCtrl as ctrl">
<h3>CatCtrl</h3>
Cat getTime: {{ctrl.currentTime}} {{ctrl.random}}
</div>
Ve t yapmak için kumandanızı değiştirin: http://jsfiddle.net/nvgofo46/1/
kodunuzu biraz aşağıdaki gibi değiştirdiyseniz, temelde html üzerinde neden ctrl.getTime() 'yi kullandığını biliyorum (http://jsfiddle.net/GomesNayagam/fnqcv86j/2/ – Gomes
). her zaman güncellemek istedin mi? –
bazı zamanlarda @PankajParkar daha rahat yerine çok kapalı yerlerde mallarla ilgilenen bu yöntemde isActive (gibi yöntem) ve yer hesaplama mantığı var, ama bu durum için ben sadece açısal değildi CatCtrl görünümünü değerlendirmek göstermek eklendi hiç değişti. –