【发布时间】:2016-04-06 00:55:41
【问题描述】:
我一直在关注文档并阅读有关 SO 的其他问题,但我完全感到困惑。我有一个 AngularJS 1.3.14 应用程序。我正在使用 ng-route 和 controller-as 语法来访问我的页面。我有一个运行良好的大页面。但是,我正在尝试创建一个指令,但无法让 JS 对象正确传递给指令。
这是 HTML:
<timechart itemsToPlot="memberData.data.adcs" title="Tares" xprop="time" yprop="tare"></timechart>
变量memberData 是我的controller-as 名称。嵌套对象memberData.data.adcs 用于在该行上方构建一个表格,如果我将{{ memberData.data.adcs }} 插入HTML 页面,它会打印出JS 对象,所以我知道那里有数据。
这是指令:
myModule.directive('timechart', function() {
var linker = function(scope, element, attrs) {
var xprop = attrs['xprop'];
var yprop = attrs['yprop'];
var title = attrs['title'];
console.log(typeof itemsToPlot);
console.log(typeof scope.itemsToPlot);
// blah blah blah elided
};
return {
restrict: 'EA',
scope: {
itemsToPlot: '=',
title: '@',
xprop: '@',
yprop: '@'
},
link: linker
};
});
当我在 console.log() 语句之后设置断点时,我看到 xplot、yplot 和 title 都可用,可以通过 attrs 数组(如代码所示)或在范围对象中使用。但是,itemsToPlot 变量始终未定义。在作用域对象中定义了一个itemsToPlot 变量,但它始终未定义。
我已经尝试了十五种方法来形成范围、命名属性、尝试填充变量。我已经查看了关于 SO 的所有问题,看来我做得正确。我希望这里有人能看到我的错误!
【问题讨论】:
标签: angularjs angularjs-directive angularjs-scope