2015-11-20 2 views
1

У меня есть мнение:Возврат строки, когда выполняют функцию

Ext.define('DemoApp.view.Main', { 
    //Some code here 
    ... 
    items: [{ 
     xtype: 'label', 
     text: //<- I want to run some scripts then return a string to this. 
    }] 
}) 

Я попытался:

text: function() { 
    return 'Test'; 
} 

но ничего не произошло.

Пожалуйста, помогите!

+0

Можете ли вы определить объект, а затем, после этого, запустить любой код, то вы хотите заполните поле 'text'? Как 'items [0] .text = 'Test''. Как бы то ни было, кажется, что вы просто устанавливаете 'text' как функцию и не выполняете эту функцию. – Jacob

ответ

2

Решение 1:

function getText(){ 
    if(someVariable==someValue){ 
    return 'text1'; 
    } else{ 
    return 'text2'; 
    } 
}; 
Ext.define('DemoApp.view.Main', { 
    //Some code here 
    ... 
    items: [{ 
     xtype: 'label', 
     text: getText() 
    }] 
}); 

В этом случае, если вы пишете основное определение в виде отдельного файла, getText функция станет глобальной функцией.

Решение 2:

Ext.define('DemoApp.view.Main', { 
    //Some code here 
    ... 
    initComponent: function(){ 
     function getText(){ 
      if(someVariable==someValue){ 
       return 'text1'; 
      } else{ 
       return 'text2'; 
      } 
     }; 
     this.items = [{ 
      xtype: 'label', 
      text: getText() 
     }]; 
     this.callParent(arguments); 
    } 
}); 
+0

Отлично! Большое спасибо! – Danie

+0

Стоит отметить, что 'Ext.define' принимает анонимную функцию в качестве необязательного третьего параметра - позволяя вам аккуратно разрешать любую императивную логику, не загрязняя глобальную область. – Emissary

-1

Это работает для меня, пожалуйста, проверьте приведенный ниже код.

<script> 
    function returntext(d){ 
     return d; 
    } 
    window.item = [{ 
     text: returntext("Name") 
    }] 
</script> 
0

Один набор скобок может сделать так много разницы:

text: function() { 
    return 'Test'; 
}() 
Смежные вопросы