Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie

I have this piece of code:

new instance.web.Model('hr.employee').query(["week_busyness"]).filter([["id", "=", employee_id]]).first().then(function(result){
                return result.week_busyness;

});

It returns field I need, but I can only use it inside that defined function. But I need that field to be used outside function. I just can't seem to understand how to do that..

For example if I assign it to variable like:

test = new instance.web.Model('hr.employee').query(["week_busyness"]).filter([["id", "=", employee_id]]).first().then(function(result){
                return result.week_busyness;

and then:

console.log(test)

it prints function object, not the 'result.week_busyness'. How could I get instead that value?

Awatar
Odrzuć

can you post your console.log(test) output ?...

or give me the output alert("myObject is " + test.toSource());

Autor

output is this: Object {state: function, always: function, then: function, promise: function, pipe: function…}

Autor

and I can't output with toSource(). It gives this error then - Uncaught TypeError: undefined is not a function

Andrius, Why don't you define a global variable at the top, and then assign your result to that variable. then you can use it anywhere.... "even outside of the scope of function too"

Najlepsza odpowiedź

You have to define your function outside that context.

Maybe you could try:

function getResults (result) {
console.log(result); // to see which data come from server
    return result.week_busyness;
}
function getError (result) {
console.log(result); // to see which data come from server
}

then you call .Model() which always returns a promise.


test = new instance.web.Model('hr.employee')
       .query(["week_busyness"])
       .filter([["id", "=", employee_id]])
       .first().then(getResults);

or

test = new instance.web.Model('hr.employee')
       .query(["week_busyness"])
       .filter([["id", "=", employee_id]])
       .first().done(getResults).fail(getError);


If you use then(getResults) even if error occur you have to handle the returned data or error.

If you use .done(getResults), the function only called if call to server was ok

If you use .fail() you could catch error if happens.


If you need more information, try search for javascript promises

I hope it's help you.


Awatar
Odrzuć
Najlepsza odpowiedź

Can you do this

test.done(function( value ) {
    console.log(value);
});

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
0
wrz 21
2277
3
sie 19
8518
1
lut 16
5758
1
cze 25
5638
2
sie 24
3007