Knockout.js 在knockout和breeze中添加带有D3的svg元素

Knockout.js 在knockout和breeze中添加带有D3的svg元素,knockout.js,d3.js,breeze,Knockout.js,D3.js,Breeze,我在做水疗。我试图做的是使用 我可以将饼图添加到body标记中,但如果我将其更改为另一个标记,它将不会呈现。我想把它添加到这个id#图中 home.js home.html 我打赌在呈现html之前调用javascript(是否在html页面的页眉中包含javascript文件?) 有两种解决方案: 在定义标记(页脚)后加载呈现图形的脚本 将调用放在类似于$(function(){…})的内容中,这是函数的快捷方式 这是一种全新的击倒/微风技术。那么在当前的breeze设置中没有这样的位置?我仍

我在做水疗。我试图做的是使用

我可以将饼图添加到
body
标记中,但如果我将其更改为另一个标记,它将不会呈现。我想把它添加到这个id
#图中

home.js

home.html


我打赌在呈现html之前调用javascript(是否在html页面的页眉中包含javascript文件?)

有两种解决方案:

  • 在定义标记(页脚)后加载呈现图形的脚本
  • 将调用放在类似于
    $(function(){…})
    的内容中,这是函数的快捷方式
    这是一种全新的击倒/微风技术。那么在当前的breeze设置中没有这样的位置?我仍然可以将svg对象绑定到viewmodel(vm)上,这样我就可以像普通的可观察对象一样使用它了吗?我不知道breeze或knockout。很抱歉
    define(['services/logger'], function (logger) {
    
        var vm = {
            activate: activate
        };
    
        //#region Internal Methods
        function activate() {
    
            // Do the graph
            return doGraph();
        }
    
        function doGraph() {
            //Width and height
            var w = 300;
            var h = 300;
    
            var outerRadius = w / 2;
            var innerRadius = w / 3;
            var arc = d3.svg.arc()
                            .innerRadius(innerRadius)
                            .outerRadius(outerRadius);
    
            var pie = d3.layout.pie();
    
            //Easy colors accessible via a 20-step ordinal scale
            var color = d3.scale.category20();
    
            //Create SVG element
            var svg = d3.select("#thegraph") // This only works if I change #thegraph to body
                .append("svg")
                .attr("width", w)
                .attr("height", h);
        }
        //#endregion
    
        return vm;
    });
    
    <section>
        <div class="thegraph" id="thegraph"></div>
    </section>