1
我是angularjs的新手,正在編寫我的第一個指令。我有一半的路,但我正在努力弄清楚如何將一些變量傳遞給指令。AngularJS將變量傳遞給指令
我的指令:
app.directive('chart', function() {
return{
restrict: 'E',
link: function (scope, elem, attrs) {
var chart = null;
var opts = {};
alert(scope[attrs.chartoptions]);
var data = scope[attrs.ngModel];
scope.$watch(attrs.ngModel, function (v) {
if (!chart) {
chart = $.plot(elem, v, opts);
elem.show();
} else {
chart.setData(v);
chart.setupGrid();
chart.draw();
}
});
}
};
});
我的控制器:
function AdListCtrl($scope, $http, $rootScope, $compile, $routeParams, AlertboxAPI) {
//grabing ad stats
$http.get("/ads/stats/").success(function (data) {
$scope.exports = data.ads;
if ($scope.exports > 0) {
$scope.show_export = true;
} else {
$scope.show_export = false;
}
//loop over the data
var chart_data = []
var chart_data_ticks = []
for (var i = 0; i < data.recent_ads.length; i++) {
chart_data.push([0, data.recent_ads[i].ads]);
chart_data_ticks.push(data.recent_ads[i].start);
}
//setup the chart
$scope.data = [{data: chart_data,lines: {show: true, fill: true}}];
$scope.chart_options = {xaxis: {ticks: [chart_data_ticks]}};
});
}
我的HTML:
<div class='row-fluid' ng-controller="AdListCtrl">
<div class='span12' style='height:400px;'>
<chart ng-model='data' style='width:400px;height:300px;display:none;' chartoptions="chart_options"></chart>
{[{ chart_options }]}
</div>
</div>
我可以訪問該指令$scope.data
,但我似乎無法到訪問$scope.chart_options
數據..它的definelty被設置爲如果我回顯它,它會顯示在頁面上..
任何想法我做錯了什麼?
UPDATE: 出於某種原因,這個指令,如果我移動alert(scope[attrs.chartoptions]);
到$表內,它首先提醒爲「不確定」,然後再爲合適的值,否則它總是不確定的。它可能與我用來繪製圖表的jquery flot庫有關嗎?
乾杯, 本
嘗試創建一個plunker或小提琴來隔離問題並在此共享,以便有人可以幫助 – Chandermani 2013-05-12 07:06:55
您應該只能直接在指令中訪問'scope.chart_options',因爲您沒有在該指令中聲明新的作用域指示。 – 2013-05-12 08:05:28