Я использую директиву для рисования графиков:AngularJS: Как получить доступ к сфере из директивы
drawGraph.directive "graph", ->
restrict: "E" # Use as element
scope: # Isolate scope
data: "=" # Two-way bind data to local scope
opts: "=?" # '?' means optional
template: "<div></div><div id='{{graph.id}}'></div>" # We need a div to attach graph to
link: (scope, elem, attrs) ->
graph = new Dygraph(elem.children()[0], scope.data, scope.opts)
Хотя
<div id='{{graph.id}}'>
на самом деле работает в частичном, она возвращает
<div id></div>
, когда я использую его в шаблоне директивы. Может ли кто-нибудь сказать мне, почему?
Update:
После намека @Marek, моя директива теперь выглядит следующим образом:
drawGraph.directive "graph", ->
restrict: "E" # Use as element
scope: # Isolate scope
data: "=" # Two-way bind data to local scope
opts: "=?" # '?' means optional
template: "<div></div><div class='legend'></div>" # We need a div to attach graph to
link: (scope, elem, attrs) ->
scope.opts.labelsDiv = elem.children()[0].getElementsByClassName("legend")[0]
scope.graph = new Dygraph(elem.children()[0], scope.data, scope.opts)
Опция добавлена в контроллере:
drawGraph.controller "MyCtrl", [ "myService", "$scope", (myService, $scope) ->
myService.async().then (d) ->
rawData = d
group = rawData
i = 0
while i < group.length
j = 0
while j < group[i].data.length
# Convert date
tmp = new Date(group[i].data[j][0])
group[i].data[j][0] = tmp
# Set draw options
group[i].opts =
labels: [ "x", "Your Price", "Market Price" ],
customBars: true,
labelsSeparateLines: "true",
hideOverlayOnMouseOut: false,
legend: "always",
showRangeSelector: true,
xAxisLabelWidth: 80,
++j
++i
$scope.graphs = group
Спасибо @Marek за ваш ответ, но, к сожалению, это не работает: он по-прежнему «
». – user3255061Хорошо, я взглянул на библиотеку dygraph и, увидев объект, который возвращает конструктор Dygraph, не содержит свойства id. Хорошо, что вам это не нужно. Взгляните сюда http://plnkr.co/edit/Al06fWr0Ib8H7BIr5Dbi?p=preview –
Большое спасибо за ваши усилия @Marek. Вам нужен идентификатор, когда вы хотите отделить легенду от графика: http://dygraphs.com/options.html#Legend «labelsDiv», чего я хочу достичь. Я также чувствую, что мне почему-то не хватает фундаментального понимания областей и директив. – user3255061