我正在将 Kendo UI 与 AngularJS 1.x 结合使用。我还将 Firebase 与 AngularFire 库一起使用。因为我使用的是 Firebase,所以我决定扩展 Kendo UI 数据源,并将其命名为 kendo.data.FirebaseDataSource.js。
我的自定义数据源扩展了 Kendo UI 数据源,并在我想要访问 AngularFire 功能的位置添加了自定义传输。
例如,在 kendo.data.FirebaseDataSource.js
源中,我想访问 AngularFire 的 $firebaseArray 功能以及我创建的任何其他模块(实用函数等),它们驻留在另一个名为 my-custom-module.js
的文件,但我无法了解如何执行此操作。
我尝试执行以下操作,但它(显然)不起作用:
(function ($, kendo, firebase, $firebaseArray) {
'use strict';
编辑
kendo.data.FirebaseDataSource.js
(function ($, kendo, firebase, $firebaseArray) {
'use strict';
var getCustomer = function () {
var data = $firebaseArray(firebaseDataService.data);
var listed = [];
data.$loaded()
.then(function(){
angular.forEach(data, function(data){
listed.push({
"firstName": data.firstName,
"lastName": data.lastName
})
})
})
return listed;
};
var firebaseTransports = {
read: function (options) {
var customers = getCustomers();
options.success(customers);
}
};
kendo.data.extensions.FirebaseDataSource = kendo.data.DataSource.extend({
init: function (options) {
kendo.data.DataSource.fn.init.call(this, $.extend(true, {}, { transport: firebaseTransports }, options));
}
});
})($, kendo, firebase, $firebaseArray);
编辑2
controllerGrid.js
var fbDataSource = new kendo.data.extensions.FirebaseDataSource({
schema: {
model: {
id: "id",
fields: {
firstName: { type: "string" },
lastName: { type: "string" }
}
}
}
})
vm.gridOptions = {
dataSource: fbDataSource
基于上述 controllerGrid.js
源代码,我只需为 Kendo UI Grid 小部件执行即可使用 kendo.data.FirebaseDataSource.js
的读取传输功能> 只是对我的 gridOptions 中新创建的 fbDataSource 进行简单引用。
最佳答案
$firebaseArray 是一个仅存在于 Angular 中的概念,因为它是可注入(inject)的。您无法创建函数并将其传入以进行定义。您必须使用 native firebase 调用,因为它们暴露在窗口上。
要获取数据,您必须使用如下内容:
firebase.database().ref(...).on('value', function(snapshot){
console.log(snapshot.val());
})
您可以在此处阅读有关如何使用它的文档:https://firebase.google.com/docs/database/web/read-and-write#read_data_once
如果你需要注入(inject),你必须在指令中创建你的kendoUi,然后你可以用这种方式注入(inject)。
.directive(..., function(){
return {
...
controller: function($firebaseArray){
//kendo code here
}
}
})
关于javascript - 如何从自定义 Kendo UI 数据源访问 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41193384/