0

別のjsファイルから$scopeのメソッドをemitして、$scopeのデータを反映させたいです。しかし、それはできません。

私のソースはこんな感じです。

another.js

//o.delegate  refer HomeCtrl's  to $scope
// render Pagination by simplePagination 
o.delegate.renderOn(idx)

home_controller.js

function HomeCtrl($scope,$routeParams,...){
  $scope.items = [];

  $scope.renderOn(idx){
      // fooo is called.
      console.log("called fooo");

      // changed $scope.items but $scope.items doesn't reflect view.
      $scope.items.append("foo");
  }
}

$scope.items を操作してビューに反映させたい。何か考えはありますか?前もって感謝します。

4

1 に答える 1

2

角度処理ループの外側からスコープの変更を呼び出します。したがって、更新は自動的に取得されません。

$apply 関数を使用してスコープを変更することを angular に通知できます。これにより、問題が解決するはずです。ただし、angular と外部スクリプトから呼び出す場合は、別の関数を使用する必要があります。

function HomeCtrl($scope,$routeParams,...){
  $scope.items = [];

  //this can be called from within angular
  $scope.renderOn(idx){
      // fooo is called.
      console.log("called fooo");

      // changed $scope.items but $scope.items doesn't reflect view.
      $scope.items.append("foo");
  }
 //this is to be called externally
 var renderOnExternal = function(idx){
     $scope.$apply(function() {
         $scope.items.append("foo");
     });
    //or even: $scope.$apply(function(){ $scope.renderOn(idx);});
 }
}
于 2013-10-17T11:22:19.953 に答える