想不出更好的头衔,抱歉。
请考虑以下代码 -
//controller
function ProductCtrl($scope) {
getCategories(function (result) {
$scope.category = result.categories[0].name;
}); // asynchronouse method; getCategories calls uses XHR and returns the result as callback.
}
//view
{{category}}
当浏览器加载视图时,会立即调用getCategories
。如何按需加载它,比如onLoad on div或者其他什么东西,以便我可以在其他地方重用这个方法?类似于$scope.getCategories
返回我想要的数据,而不是控制器负载。我如何在视图中使用此方法?例如<div onload=getCategories()></div>
有效吗?
另一个问题是,视图无法打印category
。如何在$scope.category
之外提供getCategories
?
答案 0 :(得分:0)
当视图在浏览器中加载时,会立即调用getCategories。如何按需加载?
将其包装在一个函数中,并在适当的时候调用该函数:
$scope.getCategories = function() {
getCategories(function (result) { ... }
}
所以我可以在其他地方重复使用这种方法吗?
如果多个视图需要访问getCatetories的结果,则应创建一个存储结果的服务。然后,您的控制器可以注入该服务以访问它。
视图不会打印类别。
你的AJAX发生在Angular的“外部”,因此Angular不知道正在调用回调并且$scope.category
正在更新。只需在回调中更新$scope.$apply()
后添加$scope.category
,Angular就会生成digest cycle并更新您的观点。