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/

次に、この require 内に定義モジュールをロードします。

<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 に答える