3

小さな問題があります。プロトタイプとしての初期オブジェクトに基づいて、バインディングなしで 2 つの角度モデルを作成するために使用したいオブジェクトがあります。

var def = {
   value: 'example'
}

角度で:

var c = Object.create(def);
c.anothervalue = 12345;
$scope.c = c;

var d = Object.create(def);
d.anothervalue = 765432;
$scope.d = d;

c と d は、バインドなしで正しく作成されます。しかし、コントローラーで正常に動作していても、Angular View でオブジェクトの初期値にアクセスできません。

Object.prototype について読んだことがありますが、解決策が見つかりませんでした。

ここにフィドルを置きました

4

2 に答える 2

3

コピー機能Object.createangular.copyに変更します。

var c = angular.copy(def);

私はあなたのフィドルでそれを試しましたが、あなたが望むことをすると思います:

c:{ "value": "example", "anothervalue": 12345 } 
d:{ "value": "example", "anothervalue": 765432 }
于 2013-05-08T07:57:38.643 に答える
1

angular.copy()大きなオブジェクトではかなり遅くなる可能性があることがわかりました。

オブジェクトに単純な変数のみがあり、関数がないと仮定すると、次を使用できます。

var c = JSON.parse(JSON.stringify(d));

更新されたフィドル: http://jsfiddle.net/0d8fp9bz/

ソース: https://stackoverflow.com/a/4591639/5385381

警告: これにより、Date オブジェクトや、JSON 仕様に含まれていないものはすべて破棄される可能性があります。

于 2016-07-28T16:52:03.400 に答える