如何在RequireJS定义模块中设置对象的属性并使用它

时间:2013-06-23 13:39:20

标签: requirejs

我有一个Helper.js文件,基本上它是一个对象,其中包含我Backbone个应用程序周围使用的全局属性列表。

我需要在我body应用内部使用Backbone之前设置其中的一些属性,我尝试了这个但是它不起作用:

<script type="text/javascript">
require(["app/helper"], function (Helper) {
    console.log('default Helper.webroot = ' + Helper.webroot);
    Helper.webroot = "<?php echo $this->webroot;?>";
    console.log('require Helper.webroot = ' + Helper.webroot);
});
</script>

console:
default Helper.webroot = /
require Helper.webroot = /site.com/subfolder/

然后我在这个require中加载一个define模块:

<script type="text/javascript">
require(["app/models/status_message", "app/views/status_message"], function (StatusMessageModel, StatusMessageView) {
    var StatusMessage = new StatusMessageView({
         model:new StatusMessageModel({
         icon : "<?php echo $icon;?>",
         type : "<?php echo $message_type; ?>",
         title : "<?php echo __('Informazione'); ?>",
         message :"<?php echo __('Nessun messaggio di notifica'); ?>"
         })
    });

    <?php if(!empty($message)) { ?>
         StatusMessage.model.set({message:"<?php echo $message; ?>"});
    <?php } ?>
});

app/views/status_message我试图登录Helper.webroot:

define([
    "jquery",
    "handlebars",
    "lodash",
    "helper",
    "backbone",
    "app/models/status_message",
    "text!app/templates/status_message.php"
    ],

    function ($, Handlebars, _, Helper, Backbone, StatusMessageModel, tmplStatusMessage) {

        console.log('define Helper.webroot = ' + Helper.webroot);
        return  Backbone.View.extend({...});
}
);

console:
define Helper.webroot = /

所以我没有在webroot应用之前设置Backbone,我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以在另一个require的函数正文中调用require

require(["app/helper"], function (Helper) {
    Helper.webroot = "<?php echo $this->webroot;?>";

    require(["app/models/status_message", "app/views/status_message"], 
    function (StatusMessageModel, StatusMessageView) {

             // [Helper.webroot is correctly set.]

     })
})