我一直在关注文档并阅读有关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
变量始终未定义。在scope对象中定义了一个itemsToPlot
变量,但它总是未定义的。
我尝试了十五种形成范围的方法,命名属性,试图让变量填充。我已经查看了有关SO的所有问题,看起来我正确地做到了。我希望有人能看到我的错误!
答案 0 :(得分:1)
变量确实可能已设置,但不是马上。因此,您需要做的是在指令范围上添加监视。
zip_file = cStringIO.StringIO()
with zipfile.ZipFile(file=zip_file, mode='w', compression=zipfile.ZIP_DEFLATED) as zf:
for f in files:
zf.writestr(f.file_name, f.get_data())
for f in images:
try:
zf.writestr(str(f.name), f.read())
except:
pass
files_email.append({
'clinic_name': clinic.name,
'url': send_to_s3(zip_file, file_name, 60 * 60 * 48),
})
zip_file.close()
答案 1 :(得分:1)
{h} itemsToPlot
更改items-to-plot
<timechart items-to-plot="memberData.data.adcs" title="Tares" xprop="time" yprop="tare"></timechart>