基本前提是我在编译并将其复制到变量后尝试访问元素的value属性。例如:如果vm.datasource.data ['+ i +']。HolidayName编译成“圣诞节”我想获取该值并将其存储在变量中。
是否可以将编译后的值复制到变量中?
var link = function(scope, elem, attrs){
setTimeout(function(){
var checkboxCellArray = elem.find('.md-checkbox-cell');
_.forOwn(checkboxCellArray, function(node, i) {
if(angular.element(node).hasClass('md-checkbox-cell')){
var element = angular.element('<p value="{{vm.selected.length}} checked. {{vm.headers[0].orderBy}}. {{vm.datasource.data['+ i +'].HolidayName}}. {{vm.headers[1].orderBy}}. {{vm.datasource.data['+ i +'].Country}}"></p>')
var compiled = $compile(element)(scope);
setTimeout(function(){
console.log(compiled);
}, 500)
}
});
}, 1000)
}
答案 0 :(得分:0)
经过几个小时的辛苦工作后,我发现了解决方案后5分钟...
只需在编译后添加范围。$ apply(),变量将具有更新的值。
答案 1 :(得分:0)
真正的问题是你使用setTimeout
函数并从中更新角度的东西。 setTimeout
异步事件正在修改来自外部角度世界的角度范围,不会使角度消化系统运行消化周期。您必须手动启动它以更新HTML页面上的绑定。使用$timeout
代替setTimeout
可以轻松解决此问题,setTimeout
会在$timeout(function(){
var checkboxCellArray = elem.find('.md-checkbox-cell');
_.forOwn(checkboxCellArray, function(node, i) {
if(angular.element(node).hasClass('md-checkbox-cell')){
var element = angular.element('<p value="{{vm.selected.length}} checked. {{vm.headers[0].orderBy}}. {{vm.datasource.data['+ i +'].HolidayName}}. {{vm.headers[1].orderBy}}. {{vm.datasource.data['+ i +'].Country}}"></p>')
var compiled = $compile(element)(scope);
$timeout(function(){
console.log(compiled);
}, 500)
}
});
}, 1000)
}
&amp;将在它之后运行消化循环。
<强>代码强>
In [142]: df
Out[142]:
value date stock
0 4 2015-01-01 amzn
1 2 2015-02-01 amzn
2 5 2015-03-01 amzn
3 6 2015-04-01 amzn
4 7 2015-05-01 amzn
5 8 2015-06-01 amzn
6 6 2015-07-01 amzn
7 5 2015-08-01 amzn
8 4 2015-09-01 amzn
9 1 2015-10-01 amzn
10 2 2015-11-01 amzn
11 4 2015-12-01 amzn
12 7 2015-12-02 amzn
In [143]: df[(df['date'] >= pd.to_datetime('2015-10-01'))].groupby(df['date'].dt.month).sum()
Out[143]:
value
date
10 1
11 2
12 11