我正在寻找解决方案,但徒劳无功。
我有一个 Symfony2 站点,一个页面加载一个像这样的主干应用程序:
{% extends "AcmeCardBundle::layout.html.twig" %}
{% block content %}
<div id="main_container"></div>
{% endblock %}
{% block javascripts %}
<script>
var idfoo = "foo";
</script>
{% javascripts
'@AcmeCardBundle/Resources/public/js/vendors/require.js'
'@AcmeCardBundle/Resources/public/js/boot.js'%}
<script type="text/javascript" src="{{ asset_url }}" data-main="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
{% block stylesheets %}
{% stylesheets 'bundles/acmecard/css/screen.css' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
此代码使用 Requirejs 加载我的 boot.js
requirejs.config({
baseUrl: 'http://localhost/symfony2/web/bundles/acmecard/js',
paths: {
jquery: 'vendors/jquery',
underscore: 'vendors/underscore',
backbone : 'vendors/backbone'
}
});
// Start the main app logic.
requirejs(['jquery','underscore','backbone', 'app/app','app/router' ],
function ( $, _ , Backbone, app ) {
$(document).ready(function () {
console.log(window.idfoo);
app.initialize();
});
}
);
我的问题可能很愚蠢,但我不明白如何从 Backbone 中的 Symfony2 访问 var window.idfoo 。我的方法不起作用...
谢谢
最佳答案
一点也不傻。虽然我无法帮助您解决 backbone
本身,但我在 AngularJS
方面也遇到了类似的问题。尽管如此,分辨率基本上是相同的。
这就是我解决这个问题的方法:
<script>
window['myBackboneApp'] = {
var1: 'foo',
var2: 'bar'
}
</script>
然后在 boot.js
中直接引用 window['myBackboneApp']
。
我不确定这是否是处理这个问题的正确方法。例如,就在最近,我发现Angular
中有一种传递属性的方法至 Controller 。也许 backbone.js
也有类似的东西?
关于javascript - 我如何使用 symfony 的数据初始化我的单页 Backbone 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300778/