我有一个ng-include
html元素,并希望将一些数据从外部传递到 Controller 。
来自controller
的主要fetches
json
data
http webservice
,然后将数据提取到作用域变量climadata
中。
以下是pseudocode
,但您知道了:
function mainController($scope, $http) {
$http.get().then(
$scope.climadata = response.clima;
);
}
<div ng-controller="mainController">
<div ng-include="'clima.html'" ng-controller="climaController" onload="climamodel = climadata"></div>
</div>
效果很好,但是climadata永远不会到达
climaController
。检查如下:function climateController($scope) {
console.log($scope.climamodel); //prints "undefinied"
};
climamodel在控制台中始终是未定义的,但是为什么呢?
最佳答案
这是可行的,获得undefined
的原因是因为,您是通过$http
请求获取数据的,因此,在获取数据climaController
将执行之前,那时没有作用域变量调用climadata
。
检查这个DEMO
您可以看到控制台正在打印undefined
,但是在ajax请求之后数据可用后,您将在部分HTML
页面上获取数据。
如果要在ajax完成后加载inclcude
,请使用ng-if
<div ng-if="climadata" ng-include="'clima.html'" ng-controller="climaController"></div>
如果存在
climadata
,则仅此div进程意味着include
仅在climadata
可用时起作用。DEMO
你可以从
onload="climamodel = climadata"
中删除