HIKI Tech Blog

yhikishimaのブログ。ゆるくUE4やUnity、web開発の記事を書いてます。

【FE】AngularJsでよく使うAPI

angular.module()などはAngularで実装する際、必ずと言っていいほど使用すると思いますが、そのほかのAngularのAPIで便利だなと思った関数あったので、書いてみました。

angular.copy

オブジェクトまたは配列をディープコピーします。 AngularJsでは同じ変数を参照してしまうと、双方向データバインディングの影響で、意図していない場所の値が変更されてしまう可能性があるので、その際によく使いました。

$scope.user = 'user1';
var user1.name = angular.copy($scope.user);

angular.forEach

いわゆるforEachしてくれます。obj内の各項目に対し、それぞれiterator関数を実行してくれる。iteratorの関数は、iterator(value, key)として実行され、valueにはオブジェクトのプロパティの値または配列の要素が入り、 keyにはオブジェクトのプロパティのキーまたは配列のインデックス番号が入ります。

var lists={ item1:'name1', item2:'name2', item3:'name3' };

angular.forEach(lists, function(val, key) {
// ~~
});

angular.merge

任意の複数オブジェクトを一つのオブジェクトにマージしてくれます。 配列でも使用できるようです。

var obj1={ item1:'name1', item2:'name2' };
var obj2={ item3:'name3', item4:'name4' };

var mergeObj = angular.merge(obj1, obj2);

angular.isDefinedなどis〜

対象が定義されているか否かを調べてくれます。定義されていればtrueが返ります。他にもisDateとかisArrayとかあり、条件分岐で複雑な処理を書かなくて良いので便利です。

var val = 'key';
angular.isDefined(val); // true

他にも便利なAPIが多数用意されているようなので、underscore.jsなど使用する前に一度目的のapiがないかどうか調べてみても良いかもですね。