讨论社区

kintone.app.record.set()执行后触发change事件,change的event中的值和set的值不一致

如题,set的时候A,B,C三个字段,A=1,B=2,C=3,change绑定的A字段,set执行后会立刻执行change事件,要去获取B,C两个字段的值,但此时event中B,C两个字段值为undenfined,这个情况比较特殊,同样的操作,同样的代码,两个应用一个是正常的change的event中B,C字段都有值,另一个却获取不到,最后只能用get再次获取,再进行操作,这是为什么呢?

    var ShowAndChangeEvents = ["app.record.index.edit.change.A",

        "app.record.create.change.A",

        "app.record.edit.change.A",

    ];

kintone.events.on(ShowAndChangeEvents, function(event) {

        //Mantis14977 20190516 chin

        new kintone.Promise(function(resolve, reject) {

            resolve();

        }).then(function(){

            var getrecord=kintone.app.record.get();

            var record=getrecord.record;

             //照会モードのときは編集不可としてください

            if (event.type === "app.record.detail.show") {

                setDropdowndisabled();

            }

             

            if (record.radModelCode.value) {

                showStyleDropdown(getrecord);

            } else {

                setDefault();

                $("#user-js-radSpecList1").parent().hide();

                $("#user-js-radSpecList2").parent().hide();

                $("#user-js-radSpecList3").parent().hide();

                $("#user-js-radSpecList4").parent().hide();

                $("#user-js-radSpecList5").parent().hide();

            }

            if (event.type === "app.record.index.edit.change.A" ||

                event.type === "app.record.create.change.A" ||

                event.type === "app.record.edit.change.A") {

                showStyleDropdown(getrecord);

            }

        })

});

on句柄中无法使用get,所以加了一层promise。。

0 人关注了该问题 关注

0

cybozu • 4月前

请参考

https://cybozudev.kf5.com/hc/kb/article/206917/#step3

而且应该不需要用promise再去取一遍数据

直接event.record就能获取记录的对象。

具体请参考 event对象的属性

2 个讨论

  • 充满愤怒的人生你快乐吗 • 发表于 2019年05月16日 17:42

    kintone.app.record.set()之后,触发change事件,event里的record里没有数据,set过的值 在event.record中为undenfinde

  • cybozu • 发表于 2019年05月17日 11:08

    请参考 

    https://cybozudev.kf5.com/hc/kb/article/206920/#step2

    在kintone.events.on 的事件句柄里无法执行 kintone.app.record.get 和 kintone.mobile.app.record.get 。 在上述的事件句柄里获取记录数据时请使用参数的event对象,记录数据的更新请使用event对象的return。


    (function () {
        kintone.events.on("app.record.edit.show", function(event)
          {    
           var record = event.record;
           console.log(record);
           record['a']['value'] = '123';
            return event;
        }); 
        
        kintone.events.on("app.record.edit.change.a", function(event)
          {    
           console.log(event.record);
           var record = event.record;
        });
    })();


您需要登录后才可回复
您需要登录后才可以回复