23 EKİM 2012, Salı
Sözler bağlamak için nasıl açısal JS:
Bir görünüm söz bağlamaya çalışıyorum. Eğer bunu doğrudan yapabilirsiniz bilmiyorum ama yapmaya çalıştığım bu. Yanlış ne yapıyorum herhangi bir fikir?
Not: kaynak zaman aşımı ile biraz yapmacık ve statik veri kullanır, ama bu kodu teşhis etmek için daha kolay hale getirmek için.
DÜZENLEME:JSFiddle Sayfa: http://jsfiddle.net/YQwaf/27/
EDİT: ÇÖZÜM:Dışarı çıktıolabilirdoğrudan bağlama vaat ediyor. Benim orijinal kod ile iki sorun vardı:
- SetTimeout() kullanarak açısal yerine $zaman aşımı bir sorun oldu. Açısal zaman aşımı tetiklendiğinde UI yenilemek gerekiyor bilmiyor ($scope bunu çözmek olabilir.$setTimeout içinde uygulamak, ya da sadece $zaman aşımı kullanın )
- Söz döndü bir işlev için bağlayıcı bir sorun oldu. Eğer ikinci defa çağırdı alırsa, başka bir söz ediyor. İyi söz, bir scope değişkeni ayarlamak ve sadece gerektiğinde yeni bir söz oluşturmaktır. (Benim durumumda, bu sesleniyordu $scope.$Ülke Kodu izle)
HTML:
<div ng:controller="addressValidationController">
Region Code <select ng:model="regionCode" ng:options="r.code as r.name for r in getRegions()"/>
Country Code<select ng:model="countryCode"><option value="US">United States</option><option value="CA">Canada</option></select>
</div>
JS:
function addressValidationController($scope, $q) {
var regions = {
US: [{code: 'WI',name: 'Wisconsin'}, {code: 'MN',name: 'Minnesota'}],
CA: [{code: 'ON',name: 'Ontario'}]
};
$scope.getRegions = function () {
var deferred = $q.defer();
setTimeout(function () {
var countryRegions = regions[$scope.countryCode];
console.log(countryRegions);
if(countryRegions === undefined) {
deferred.resolve([]);
} else {
deferred.resolve(countryRegions);
}
}, 1000);
return deferred.promise;
};
}
CEVAP
24 Ocak 2014, Cuma
İtibariyle 1.2, you can't use promises in templates directly anymore Açısal.
Bunun yerine, her zamanki—hayır, sihir gibi then
içinde $scope
sonucu koymak gerekir.
Eski davranış almak için geçici bir çözüm, diyebilirsiniz
$parseProvider.unwrapPromises(true)
ama bu özellik, daha sonra silinecektir, bu yüzden güvenmeyin.
Bunu Paylaş:
Nasıl açısal-uı'nin önerileri sun...
AngularJS : liste bağlamak için Nasıl ...
Nasıl bir numaralama için RadioButtons...
Nasıl NSURLConnection bağlamak için gü...
Nasıl WPF ters boolean özelliklerini b...