Не вызывать функцию HelpRequest

У меня есть Input field, созданный в контроллере.

sap.ui.getCore().byId("SimpleFormChange354").addContent(new sap.m.Input({value : "", enabled:true, editable:true, showValueHelp:true, valueHelpOnly:true, valueHelpRequest:"handleValueHelp"}));

В том же controller определяю функцию:

handleValueHelp : function (oCOntroller) {
        if (! this._oDialog) {
          this._oDialog = sap.ui.xmlfragment("apps.appIntra.fragment.dialogClienti", this);
        }

        .....
  },

Но если я нажму на элемент предложения в конце input field, у меня появится ошибка:

Uncaught TypeError: undefined is not a function sap-ui-core.js:122
a.fireEvent sap-ui-core.js:122
a.fireEvent sap-ui-core.js:134
(anonymous function) sap-ui-core.js:134
sap.m.Input._fireValueHelpRequestForValueHelpOnly Input.js:16
sap.m.Input.ontap Input.js:17
a._callEventHandles sap-ui-core.js:134
a._handleEvent sap-ui-core.js:134
U._handleEvent sap-ui-core.js:134
Q.extend.proxy.p sap-ui-core.js:16
Q.event.dispatch sap-ui-core.js:27
g jquery-mobile-custom.js:17
p jquery-mobile-custom.js:17
Q.event.dispatch sap-ui-core.js:27
Q.event.add.v3.handle sap-ui-core.js:27
Q.event.trigger sap-ui-core.js:27
(anonymous function) sap-ui-core.js:27
Q.extend.each sap-ui-core.js:16
Q.fn.Q.each sap-ui-core.js:16
Q.fn.extend.trigger sap-ui-core.js:27
P jquery-mobile-custom.js:17
R jquery-mobile-custom.js:17
Q.event.dispatch sap-ui-core.js:27
Q.event.add.v3.handle sap-ui-core.js:27

Вместо этого, если я попытаюсь подключить функцию:

sap.ui.getCore().byId("SimpleFormChange354").addContent(new sap.m.Input({value : "", enabled:true, editable:true, showValueHelp:true, valueHelpOnly:true}).attachValueHelpRequest(this.handleValueHelp(this)));

когда во время выполнения я прихожу к этому коду, handleValueHelp срабатывает (сразу, даже я не нажимаю на элемент предложения!).

Затем я пытаюсь щелкнуть элемент предложения, я получил эту ошибку:

Uncaught TypeError: Cannot read property 'call' of undefined sap-ui-core.js:122
a.fireEvent sap-ui-core.js:122
a.fireEvent sap-ui-core.js:134
(anonymous function) sap-ui-core.js:134
sap.m.Input._fireValueHelpRequestForValueHelpOnly Input.js:16
sap.m.Input.ontap Input.js:17
a._callEventHandles sap-ui-core.js:134
a._handleEvent sap-ui-core.js:134
U._handleEvent sap-ui-core.js:134
Q.extend.proxy.p sap-ui-core.js:16
Q.event.dispatch sap-ui-core.js:27
g jquery-mobile-custom.js:17
p jquery-mobile-custom.js:17
Q.event.dispatch sap-ui-core.js:27
Q.event.add.v3.handle sap-ui-core.js:27
Q.event.trigger sap-ui-core.js:27
(anonymous function) sap-ui-core.js:27
Q.extend.each sap-ui-core.js:16
Q.fn.Q.each sap-ui-core.js:16
Q.fn.extend.trigger sap-ui-core.js:27
P jquery-mobile-custom.js:17
R jquery-mobile-custom.js:17
Q.event.dispatch sap-ui-core.js:27
Q.event.add.v3.handle

person padibro    schedule 08.08.2014    source источник


Ответы (1)


В первой строке у вас есть:

valueHelpRequest:"handleValueHelp"}));

который является просто строкой. Замените эту строку фактической ссылкой на ваш метод:

valueHelpRequest:this.handleValueHelp}));

и будет работать ;-)

person Qualiture    schedule 08.08.2014
comment
спасибо! Это работает! Но... почему, если я использую .attachValueHelpRequest(this.handleValueHelp()), у меня возникает ошибка? - person padibro; 08.08.2014
comment
Из-за фигурных скобок в handleValueHelp() вы выполняете функцию, а не передаете ее в качестве параметра. Таким образом, только this.handleValueHelp - это способ передать функцию в качестве параметра. - person Tim Gerlach; 08.08.2014