我創造了plunker http://plnkr.co/edit/yF8H9i8tyu1o2xJCN9bVcontrollerAs指令中的鏈接功能不工作
與範圍有chartData控制器使用範圍D3條形圖指令。
.controller('d3Controller', ['$scope', function($scope) {
$scope.chartData = [10,20,30,40,50];
}])
,我有chartData與指令的隔離範圍
scope: {
chartData: '='
},
restrict: 'EA',
replace: false,
link: function (scope, elem, attrs) {
var data = attrs.chartData.split(',');
var d3 = $window.d3;
var chart = d3.select(elem[0]);
chart
.append("div")
.attr("class", "chart")
//returns an array of all <div>...</div> elements in div
.selectAll("div")
.data(scope.chartData)
.enter()
.append("div")
.transition().ease("elastic")
.style("width", function (d) {
return d + "%"
})
.text(function (d) {
return d + "%"
});
雙向協會和相關的指令是如下
<bar-chart chart-data="chartData"></bar-chart>
這是工作的罰款。但是,我正在嘗試使用「controllerAs」來執行相同的操作。
我嘗試了一些更改,但它不起作用。
http://plnkr.co/edit/eIRkAtfJx9rlWN5LtllC
我改變了控制器的作用域chartData這個
.controller('d3Ctrl', ['$scope', function($scope) {
var self = this;
self.chartData = [10,20,30,40,50];
}])
使用controllerAs和bindToDirective選項指令
scope: { },
controllerAs: 'barCtrl',
controller: function() { },
bindToDirective: {
chartData: '='
},
試圖讓chartData時
,跟它barCtrl不
定義。
.selectAll("div")
.data(barCtrl.chartData)
我在做什麼錯?
我看着toddMotto的博文:http://toddmotto.com/no-scope-soup-bind-to-controller-angularjs /它說這是新的東西 '作用域:{}, bindToController:{ name:'=' },' –
@would_like_to_be_anon好吧,它有什麼不同?我不認爲你可能正確地關注了東西?它建議使用'bindToController:'chartData:'=' },這是無證的,我不會這樣做。由於沒有記錄,所以可能會發生這種情況,因此將其刪除。 – PSL
我不認爲它有什麼不同。但是,他提到這是做這件事的首選方式。 '(首選),重構bindToController:true到一個Object中,爲了清晰起見,將範圍:{}屬性移動到它。修復了與示例2相同的內容,但是爲其他開發人員工作/重新編寫代碼添加了清晰度。' –