Javascript 聚合和角度:尝试将数据从控制器传递到元素时失败
我的问题是下一个:Javascript 聚合和角度:尝试将数据从控制器传递到元素时失败,javascript,jquery,angularjs,data-binding,polymer,Javascript,Jquery,Angularjs,Data Binding,Polymer,我的问题是下一个: 我有一个AngularJS应用程序,里面使用了定制的聚合物元素 例如,我有一个名为Main的控制器。它处理/main路由并使用自己的视图-main.html main.html中有my元素 我在控制器中初始化集合,并使用document.querySelector('my-element')将其传递给元素。集合=$scope.collection。当我直接打开/main URL并加载页面时,它会工作。但是,当我直接打开另一个路由,然后转到/main时,它不起作用,因为控制器在
//我的控制器
app.controller('MyController',函数($scope,collection){
$scope.collection=collection;//从路由解析
});
//我的element ready()方法
...
就绪(){
//如果没有超时,它将抛出异常,因为JSON.parse会在路由状态更改时解析{{list}}字符串本身。
setTimeout(函数(){
this.list=JSON.parse(this.getAttribute('list'));
}, 300);
}
您可以使用聚合物数据绑定,如下所示:
<polymer-element name="my-element" attributes="listJson">
<template>
....
</template>
<script>
Polymer({
created: function() {
this.list = [];
},
ready: function() {
this.initList();
},
listJsonChanged: function() {
this.initList();
},
initList: function() {
this.list = JSON.parse(this.listStr);
}
})
</script>
</polymer-element>
....
聚合物({
已创建:函数(){
this.list=[];
},
就绪:函数(){
this.initList();
},
listJsonChanged:function(){
this.initList();
},
initList:function(){
this.list=JSON.parse(this.listStr);
}
})
然后在视图中:
<my-element listJson="{{collection}}"></my-element>
你能给我们看一些代码吗?不客气。它也不起作用-JSON.parse抛出错误,因为它解析{{collection}}字符串,而不是集合JSON本身。我找到了另一种解决方案:1)用于属性解析的domReady事件处理程序;2) $watching document.querySelector('my-element').initList用于在AngularJS控制器内分配列表数据。它在控制器加载开始时未定义。