0

我有一个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/

然后我在这个需求中加载一个定义模块:

<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应用程序,我该怎么做?

4

1 回答 1

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.]

     })
})
于 2013-06-23T16:00:08.883 回答