1

想不出更好的标题,抱歉。

请考虑以下代码 -

//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

4

1 回答 1

0

当视图在浏览器中加载时,getCategories 会立即被调用。如何让它按需加载?

将其包装在一个函数中,并在适当的时候调用该函数:

$scope.getCategories = function() {
   getCategories(function (result) { ... }
}

所以我可以在其他地方重新使用这个方法?

如果多个视图需要访问 getCatetories 的结果,您应该创建一个存储结果的服务。然后,您的控制器可以注入该服务以访问它。

视图不打印类别。

您的 AJAX 发生在 Angular 的“外部”,因此 Angular 不知道正在调用回调并且$scope.category正在更新。只需在您的回调中$scope.$apply()更新后添加$scope.category,Angular 就会运行一个摘要循环并更新您的视图。

于 2013-05-09T21:23:56.573 回答