GÜNCELLEME:Here is a link to reproduce the problemKendo UI: Tek veri kaynağı, iki widget
İLGİLİ:This is another question of mine where similar problems are happening with Kendo UI Map, maybe it could help someone figure this one out! Bu bir batmasına göz ve bir çalışma sürümü vardır.
Bir Eğik tek sayfalık uygulamasında Kendo UI DataSource, DropDownList ve Harita kullanırlar.
Hem DropDownList hem de Map için aynı DataSource nesnesini kullanmak istiyorum. Ancak, Harita çok tahmin edilemez bir şekilde davranır. Ben şablonda Harita önce DropDownList koymak
- , sadece DropDownList nüfuslu alır. Ağ trafiğini incelemek aslında sadece bir isteğin yapıldığını gösteriyor. Önce haritayı koyduğumda, ikisi de nüfuslu ve iki istekte bulunuluyor.
transport.read
'da hiçbir söz vermediğimde, ancakoptions.success
'u hemen statik bir değerle arayın, her şey beklendiği gibi çalışır. İki çağrı yapılıyor.
Bütün iş günü boyunca saçlarımı çekiyorum, bu yüzden herhangi bir yardım çok takdir ediliyor.
veri kaynağı hizmeti:
m.factory('ourDataSource', function(foo, bar, baz) {
return new kendo.data.DataSource({
transport: {
read: function(options) {
foo().then(function (result) {
return bar(result);
}).then(function (result) {
return baz(result);
}).then(function (result) {
options.success(result);
}).catch(function (err) {
options.error(err);
});
}
}
});
});
kontrolör:
m.controller('ourController', ['ourDataSource', function(ourDataSource) {
// set the data source of the dropdownlist
this.ourDataSource = ourDataSource;
// set up the map layers
this.mapLayers = [{
type: 'tile',
urlTemplate: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/#= zoom #/#= y #/#= x #',
}, {
type: 'marker',
dataSource: ourDataSource, // the same data source as before
locationField: 'Position',
titleField: 'Title'
}];
}]);
görünüm:
<div ng-controller="ourController as ctrl">
<select kendo-drop-down-list
k-data-text-field="'Title'"
k-data-value-field="'Title'"
k-data-source="ctrl.ourDataSource"></select>
<div kendo-map
k-zoom="2"
k-center="[1, 1]"
k-layers="ctrl.mapLayers">
</div>
</div>
Burada ne eksik?
bakınız bu örneğe bakın Ama. Paylaşılan bir veri kaynağı, bu yüzden neden aynı verileri iki kez istemesini istiyorsunuz? Verilere bağlanmadığı için muhtemelen bu davranışı çoğaltan genel bir örneğe ihtiyacımız var. Olduğu gibi çıkarmak zor. – Brett
@Brett: Gerçekten de, iki istek istemiyorum, ancak autoBind'i devre dışı bırakıp "getirme" işlevini el ile iptal ettiğimde bile sonuç aynı. Test vakasını mümkün olan en düşük seviyeye indirdiğimi anlamak daha kolay olurdu. Genel bir örnek oluşturabilir miyim göreceğim. – damd
'ourDataSource', __new__ veri kaynağı nesnesini döndüren bir fabrika olduğu için olabilir mi? Tekil olarak döndürmeyi dene. – Brett