2016-03-18 16 views
0

Bir inceleme sistemini simüle etmeye çalışıyorum. Ng gönderim denetleyiciye değerleri nasıl iletir? Benim denetleyicisi olarakdeğerleri ng'den tasarruf edilmiyor textarea için gönderme

benim görünümünde

$scope.reviews = function() { 
 
    $scope.rating = 0; 
 
    $scope.max = 5; 
 
}; 
 
$scope.myTextArea = ''; 
 
$scope.saveReview = function(rating, myTextArea) { 
 
    console.log(rating); 
 
    console.log(myTextArea); 
 
};

var, var: Ben formu gönderdiğinizde

<form name="reviewForm" class="form-horizontal" ng-submit="saveReview(rating, myTextArea)" novalidate> 
 
    <div> 
 
    <rating ng-model="rating" max="max" aria-labelledby="'product.title'"></rating> 
 
    </div> 
 
    <div>This is the rating: {{rating}}</div> 
 
    <div class="animate-switch" ng-switch-when=true> 
 
    <textarea ng-model="myTextArea" class="form-control" placeholder="Write a short review of the product." title="Review"></textarea> 
 
    </div> 
 
    <button type="submit" class="btn btn-primary pull-right">Submit Review</button> 
 
</form>

, saveReview işlevi çıktı denilen ve edilecek konsolda 0 ve ''. Yani, hiçbir değer kaydedilmiyor/geçirilmiyor. Ng-model derecelendirme 5 yıldız gösterir ve eğer 4 yıldıza tıklarsanız, {{rating}} görünecektir 4.

Herhangi bir fikir?

cevap

0

ng-submit numaralı telefondan saveReview() işlevine hiçbir şey iletmeyin. Bunun yerine saveReview() değişkenleri kapsamdan kullanalım. Ayrıca bir nesnenin içindeki değişkenleri de kapsüllemek. Örneğin: ng-model="review.rating" ve ng-model="review.text". Çok fazla varsayarsak, yine de bir nesne olması gerekir;)

$scope.saveReview = function() { 
    console.log($scope.review.rating); 
    console.log($scope.review.text); 
}; 
+0

hmm belki de bazı bilgileri dışarıda bıraktım. Şu bölümlerin ekranlarını görüntülüyorsunuz: ürün adı seçilebilir yıldız 2 veya daha az yıldız seçildiğinde özel inceleme kutusu Yani, eğer değişkenleri kapsüllüyorsam, yıldızları dağıtmaya başlarım. İnceleme kodu şudur: $ scope.reviews = işlev() { $ scope.products = Products.query(); $ scope.review.rating = 0; $ scope.max = 5; }; Bu inceleme işlevini, sayfanın başlangıcında çağırıyorum. –

+0

Kapsülleme, verileri başka herhangi bir işlem için iletmeyi kolaylaştırır, hiçbir şeyi etkilememelidir. Gönderimin o anda sadece bir girişte çalıştığını varsayıyorum. Yani eğer girdiler üzerinde döngü yapıyorsanız, o zaman daha anlamlı olur. Sadece kaydetme işlevinin argüman almasına izin vermeyin ve değişkenleri kapsamdan kullanın. Else asıl sorunun ne olduğu hakkında daha fazla bilgiye ihtiyacım var. – Vaelyr

+0

Girdi ve hızlı yanıtlar için teşekkürler. Üzerinde biraz daha çalışıyorum. Ben açısal çok yeni. Tavsiye etmeyi umduğunuz kaynakları takdir ediyorum. –