AngularJS将json传递给指令
我在这方面还是新手,但我正在取得一些进展。。我想:) 我在使用隔离作用域将json文件从控制器传递到指令时遇到问题AngularJS将json传递给指令,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我在这方面还是新手,但我正在取得一些进展。。我想:) 我在使用隔离作用域将json文件从控制器传递到指令时遇到问题 .directive('dataGraph', function($compile){ return { restrict: 'AE', replace: true, scope: { getArchiveData: '=' }, template: '<div i
.directive('dataGraph', function($compile){
return {
restrict: 'AE',
replace: true,
scope: {
getArchiveData: '='
},
template: '<div id="chartdiv"></div>',
link: function (scope, element, attrs){
var dati = scope.getArchiveData;
console.log(dati);
};
};
});
这是我的控制器,它与工厂“数据存档”通信:
然后我有一个指令,它使用隔离作用域
.directive('dataGraph', function($compile){
return {
restrict: 'AE',
replace: true,
scope: {
getArchiveData: '='
},
template: '<div id="chartdiv"></div>',
link: function (scope, element, attrs){
var dati = scope.getArchiveData;
console.log(dati);
};
};
});
指令('dataGraph',函数($compile){
返回{
限制:“AE”,
替换:正确,
范围:{
getArchiveData:“=”
},
模板:“”,
链接:函数(范围、元素、属性){
var dati=scope.getArchiveData;
控制台日志(dati);
};
};
});
这是我的HTML:
<div ng-controller="graphCtrl">
<data-graph get-archive-data="getData"></data-graph>
</div>
在控制台中,我总是得到“未定义”
我错在哪里?这是个好办法吗
谢谢大家。因为此代码是异步的:
dataArchive.get().then(function(data){
$scope.getData = data;
});
在getData
上设置数据之前,link
函数将运行,因此此时不会设置隔离范围变量。所以,我相信你看到了一个时间问题
以确保您的指令绑定是正确的。尝试将$scope.getData
设置为静态值(例如$scope.getData=[{data:'value'}]
)。这应该行得通
此外,角度检查是否基于对象参照进行更改(重新绑定)。因此,您可能需要在控制器中定义$scope.getData
(异步调用之外)。然后,您可能希望将所有数据推入(而不是用赋值替换整个对象)
希望这有帮助。示例代码正确吗?在作用域定义中有getArchiveData,但在链接函数中调用了scope.getWeatherData()。我在做一些测试,不,不,是scope.getArchiveData。无论如何,这是不正确的,我得到的是未定义的而不是json。是的,这是有道理的。非常感谢。