1

警告:前面有 Angular 新手。

我在 angular.js 页面中有这段代码

  <div class="clearfix" ng-controller="Controller">

    <h1>Active Ideas 
    <button type="button" ng-click="search()">get Ideas</button></h1>
    <hr>

然后我将我的控制器定义为:

function Controller($scope, $http) {
  $scope.search = function(){...

它工作正常。

我想在 dom 准备好时执行 search() 函数...

我尝试从 $(function() {... 调用它,但我不知道如何从我的控制器手动执行方法

也试过了

$scope.$on('$viewContentLoaded', function() {

但无法使其工作(也找不到太多文档......)

4

2 回答 2

14

您应该search在初始化控制器时执行。IE

function Controller($scope, $http) {
  $scope.search = function(){...};
  $scope.search();
}

当 Angular 的依赖注入构造你的控制器时,你就知道你的视图已经编译、链接并准备好初始化代码了。

于 2012-09-24T02:50:34.327 回答
0

有时您需要等待第一个摘要,否则您的 DOM 将准备就绪,但它不会具有您在 $scope 中设置的任何值,假设一个带有 ng-repeat 的元素链接到 $scope 中的数组不会准备好。为了使其正常工作,您需要将代码包装在 a 中$timeout(..., 0),这样您的代码将在第一个摘要之后立即执行。

于 2014-12-19T16:26:40.757 回答