7

{{}} 内または ng-repeat およびその他の式内でアンダースコア関数を使用できないという奇妙な問題があります。私の正確なテスト機能は

{{_.last([1,2,3,4])}}

... ページの HTML で。

コントローラーでこれを行う場合にのみ、正しい答え (4) を表示できます。

$scope._ = _;

_ をファクトリとしてメイン アプリケーション モジュールに注入し、それをコントローラーに注入しようとしましたが、$scope に注入されないようです。

誰かが私が犯している間違いを見ることができますか? または、アンダースコア ライブラリが $scope に入らないようにするメカニズムはありますか? angular v.1.0.7 と最新バージョンのアンダースコアを使用しています (正確なバージョン番号は不明ですが、過去 3 週間以内です)。

4

1 に答える 1

5

Angular 式 ( {{expression}}) は、ローカルの $scope に対して評価されます。これは、コントローラを定義した場合、 function のように $scope オブジェクトMyCtrl($scope){}です。

したがって、_式でを使用する_と、 $scope に対して が評価され、 $scope.does には_メンバーがないため、式は失敗します。

したがって、_ビューで使用する唯一の方法は、 $scope オブジェクトで使用できるようにすることです$scope._ = _;


ところで、ブラウザのコンテキストで使用すると、アンダースコアが_グローバル オブジェクトとして追加されるため、JS 全体で使用できます。_これは、「工場として注入する」必要がないことを意味します。

于 2013-06-28T14:14:43.007 に答える