未捕获的TypeError:无法在'中使用'运营商搜索'位置'在未定义

时间:2016-06-02 07:04:18

标签: jquery draggable sapui5 typeerror

我对此代码段有疑问:

<script>
                $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-core');
                $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-widget');
                $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-mouse');
                $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-draggable');
                $.sap.require('sap.ui.thirdparty.jqueryui.jquery-ui-sortable');
        </script>
        <script>
                jQuery.sap.includeStyleSheet("resources/css/dashboard.css");
                sap.ui.localResources("dashboard");
                var view = sap.ui.view({id:"idHome1", viewName:"dashboard.Home", type:sap.ui.core.mvc.ViewType.JS});
                view.placeAt("content");
        </script>
        <script>
            var oButton = sap.ui.getCore().byId("oChart_Button");
            console.log(oButton);
            $(document).ready(function(){
                $(oButton).draggable({
                    cancel: false
                })
            })
        </script>

由于标题中的ErroMessage,我无法拖动我的按钮。我从互联网上得到了这个例子,对于评论这个博客的人来说代码运行起来。该按钮存在,console.log(oButton)我收到包含其属性的消息,依此类推。 任何一个解决方案?

1 个答案:

答案 0 :(得分:4)

使用getDomRef获取UI5控件的DOM元素。所以,你的代码将是这样的。

var oButton = sap.ui.getCore().byId("oChart_Button");
var el = oButton.getDomRef();
$(el).draggable({
    cancel: false
});

jQuery选择器允许您选择和操作HTML元素。 执行$(oButton)时,您将SAPUI5 Button对象传递给jQuery选择器,这将无效。因此,要获取UI5 Button控件的相应HTML DOM元素,请使用getDomRef

那么,即使将DOM传递给jQuery选择器,为什么你的按钮不能 draggable

这可能会发生,因为首先要为jQuery-Ui加载第三方库以实现可拖动功能。 然后,在加载SAPUI5库之后,只有来自SAPUI5库的函数可用。 因此,为了解决这个问题,我们可以在您的HTML文件正文中的UI5库之后加载第三方库。