現在、jQueryドラッグ&ドロップformbuilder pluginを使用しています。今、私はデータベースから要素をドラッグ・アンド・ドロップして、その要素をドラッグ&ドロップ・ビルダーに追加したいと考えています。getJSON()内から呼び出されたときにPush()が機能しない
これは私の要求機能である:
function getElements(){
$.getJSON(getContextPath() + "/api/elements/get", function (data){
$.each(data, function(key, val) {
addElement();
});
});
}
は今、私は(私はthis例を使用して、私はいくつかの事前定義された値を使用)formbuilderインスタンスにそれらを追加したい:
function addElement(){
if (!window.fbControls) window.fbControls = [];
window.fbControls.push(function(controlClass) {
console.log("HERE");
class controlStarRating extends controlClass {
static get definition() {
return {
icon: '',
i18n: {
default: 'Star Rating'
}
};
}
configure() {
this.js = '//cdnjs.cloudflare.com/ajax/libs/rateYo/2.2.0/jquery.rateyo.min.js';
this.css = '//cdnjs.cloudflare.com/ajax/libs/rateYo/2.2.0/jquery.rateyo.min.css';
}
build() {
return this.markup('span', null, {id: this.config.name});
}
onRender() {
let value = this.config.value || 3.6;
$('#'+this.config.name).rateYo({rating: value});
}
}
// register control
controlClass.register('starRating', controlStarRating);
return controlStarRating;
});
}
残念ながら、私のconsole.log("HERE")
は呼び出されていないので、そこに停止しているようです。奇妙なことは、私がリクエスト機能としてこれを使用すると、関数は正しく実行されているということです。
function getElements(){
var allElementsData = ["test"];
// $.getJSON(getContextPath() + "/api/template/get", function (data){
// });
$.each(allElementsData, function(key, val) {
addElement();
});
}
問題は何ですか?
と表示されます。問題は、**/api/elements/get **の戻り値にあると仮定します。 **データ**値を追加できますか?それは配列かjsonオブジェクトですか? – gaetanoM
いいえ、私は返されたデータ値をまだ使用していません...ハードコードされたデフォルト値でコードを使用します。 – Jordy
申し訳ありませんが、** ** getJSON **の中では、** $。each(data、func **)はありません – gaetanoM