{"action":"created","comment":{"url":"https://api.github.com/repos/angular/angular.js/pulls/comments/52244264","id":52244264,"diff_hunk":"@@ -36,17 +36,23 @@\n  * <div ng-repeat=\"(key, value) in myObj\"> ... </div>\n  * ```\n  *\n- * You need to be aware that the JavaScript specification does not define the order of keys\n- * returned for an object. (To mitigate this in Angular 1.3 the `ngRepeat` directive\n- * used to sort the keys alphabetically.)\n+ * However, there are a limitations compared to array iteration:\n  *\n- * Version 1.4 removed the alphabetic sorting. We now rely on the order returned by the browser\n- * when running `for key in myObj`. It seems that browsers generally follow the strategy of providing\n- * keys in the order in which they were defined, although there are exceptions when keys are deleted\n- * and reinstated. See the [MDN page on `delete` for more info](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_notes).\n+ * - The JavaScript specification does not define the order of keys\n+ *   returned for an object, so Angular relies on the order returned by the browser\n+ *   when running `for key in myObj`. Browsers generally follow the strategy of providing\n+ *   keys in the order in which they were defined, although there are exceptions when keys are deleted\n+ *   and reinstated. See the\n+ *   [MDN page on `delete` for more info](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_notes).\n  *\n- * If this is not desired, the recommended workaround is to convert your object into an array\n- * that is sorted into the order that you prefer before providing it to `ngRepeat`.  You could\n+ * - `ngRepeat` will silently *ignore* object keys starting with `$`, because\n+ *   it's a prefix used by Angular for public (`$`) and private (`$$`) properties.\n+ *\n+ * - The built-in filters {@link ng.orderBy orderBy} and {@link ng.filter filter} do not work with\n+ *   objects, and will throw if used with one.\n+ *\n+ * If you are hitting any of these limitations, the recommended workaround is to convert your object into an array\n+ * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could\n  * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)\n  * or implement a `$watch` on the object yourself.","path":"src/ng/directive/ngRepeat.js","position":31,"original_position":31,"commit_id":"08fed815f127f752d3ca3523a5b33447bd20e4b2","original_commit_id":"08fed815f127f752d3ca3523a5b33447bd20e4b2","user":{"login":"gkalpak","id":8604205,"avatar_url":"https://avatars.githubusercontent.com/u/8604205?v=3","gravatar_id":"","url":"https://api.github.com/users/gkalpak","html_url":"https://github.com/gkalpak","followers_url":"https://api.github.com/users/gkalpak/followers","following_url":"https://api.github.com/users/gkalpak/following{/other_user}","gists_url":"https://api.github.com/users/gkalpak/gists{/gist_id}","starred_url":"https://api.github.com/users/gkalpak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gkalpak/subscriptions","organizations_url":"https://api.github.com/users/gkalpak/orgs","repos_url":"https://api.github.com/users/gkalpak/repos","events_url":"https://api.github.com/users/gkalpak/events{/privacy}","received_events_url":"https://api.github.com/users/gkalpak/received_events","type":"User","site_admin":false},"body":"I wonder what it means to _\"implement a `$watch` on the object yourself\"_. Any idea ?","created_at":"2016-02-08T23:20:25Z","updated_at":"2016-02-08T23:20:25Z","html_url":"https://github.com/angular/angular.js/pull/13978#discussion_r52244264","pull_request_url":"https://api.github.com/repos/angular/angular.js/pulls/13978","_links":{"self":{"href":"https://api.github.com/repos/angular/angular.js/pulls/comments/52244264"},"html":{"href":"https://github.com/angular/angular.js/pull/13978#discussion_r52244264"},"pull_request":{"href":"https://api.github.com/repos/angular/angular.js/pulls/13978"}}},"pull_request":{"url":"https://api.github.com/repos/angular/angular.js/pulls/13978","id":58679244,"html_url":"https://github.com/angular/angular.js/pull/13978","diff_url":"https://github.com/angular/angular.js/pull/13978.diff","patch_url":"https://github.com/angular/angular.js/pull/13978.patch","issue_url":"https://api.github.com/repos/angular/angular.js/issues/13978","number":13978,"state":"open","locked":false,"title":" \tdocs(ngRepeat): mention limitations of object iteration","user":{"login":"Narretz","id":1153097,"avatar_url":"https://avatars.githubusercontent.com/u/1153097?v=3","gravatar_id":"","url":"https://api.github.com/users/Narretz","html_url":"https://github.com/Narretz","followers_url":"https://api.github.com/users/Narretz/followers","following_url":"https://api.github.com/users/Narretz/following{/other_user}","gists_url":"https://api.github.com/users/Narretz/gists{/gist_id}","starred_url":"https://api.github.com/users/Narretz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Narretz/subscriptions","organizations_url":"https://api.github.com/users/Narretz/orgs","repos_url":"https://api.github.com/users/Narretz/repos","events_url":"https://api.github.com/users/Narretz/events{/privacy}","received_events_url":"https://api.github.com/users/Narretz/received_events","type":"User","site_admin":false},"body":"Issue is tracked in issue Related #6266","created_at":"2016-02-08T22:46:33Z","updated_at":"2016-02-08T23:20:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4a04c0bc7ba84d6a51cda402ec0a4e0cde03cf2d","assignee":null,"milestone":{"url":"https://api.github.com/repos/angular/angular.js/milestones/118","html_url":"https://github.com/angular/angular.js/milestones/1.5.1","labels_url":"https://api.github.com/repos/angular/angular.js/milestones/118/labels","id":1548682,"number":118,"title":"1.5.1","description":"","creator":{"login":"petebacondarwin","id":15655,"avatar_url":"https://avatars.githubusercontent.com/u/15655?v=3","gravatar_id":"","url":"https://api.github.com/users/petebacondarwin","html_url":"https://github.com/petebacondarwin","followers_url":"https://api.github.com/users/petebacondarwin/followers","following_url":"https://api.github.com/users/petebacondarwin/following{/other_user}","gists_url":"https://api.github.com/users/petebacondarwin/gists{/gist_id}","starred_url":"https://api.github.com/users/petebacondarwin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/petebacondarwin/subscriptions","organizations_url":"https://api.github.com/users/petebacondarwin/orgs","repos_url":"https://api.github.com/users/petebacondarwin/repos","events_url":"https://api.github.com/users/petebacondarwin/events{/privacy}","received_events_url":"https://api.github.com/users/petebacondarwin/received_events","type":"User","site_admin":false},"open_issues":21,"closed_issues":5,"state":"open","created_at":"2016-01-28T09:55:20Z","updated_at":"2016-02-08T22:47:31Z","due_on":"2016-02-12T00:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/angular/angular.js/pulls/13978/commits","review_comments_url":"https://api.github.com/repos/angular/angular.js/pulls/13978/comments","review_comment_url":"https://api.github.com/repos/angular/angular.js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/angular/angular.js/issues/13978/comments","statuses_url":"https://api.github.com/repos/angular/angular.js/statuses/08fed815f127f752d3ca3523a5b33447bd20e4b2","head":{"label":"Narretz:docs-ngrepeat-objects","ref":"docs-ngrepeat-objects","sha":"08fed815f127f752d3ca3523a5b33447bd20e4b2","user":{"login":"Narretz","id":1153097,"avatar_url":"https://avatars.githubusercontent.com/u/1153097?v=3","gravatar_id":"","url":"https://api.github.com/users/Narretz","html_url":"https://github.com/Narretz","followers_url":"https://api.github.com/users/Narretz/followers","following_url":"https://api.github.com/users/Narretz/following{/other_user}","gists_url":"https://api.github.com/users/Narretz/gists{/gist_id}","starred_url":"https://api.github.com/users/Narretz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Narretz/subscriptions","organizations_url":"https://api.github.com/users/Narretz/orgs","repos_url":"https://api.github.com/users/Narretz/repos","events_url":"https://api.github.com/users/Narretz/events{/privacy}","received_events_url":"https://api.github.com/users/Narretz/received_events","type":"User","site_admin":false},"repo":{"id":14773045,"name":"angular.js","full_name":"Narretz/angular.js","owner":{"login":"Narretz","id":1153097,"avatar_url":"https://avatars.githubusercontent.com/u/1153097?v=3","gravatar_id":"","url":"https://api.github.com/users/Narretz","html_url":"https://github.com/Narretz","followers_url":"https://api.github.com/users/Narretz/followers","following_url":"https://api.github.com/users/Narretz/following{/other_user}","gists_url":"https://api.github.com/users/Narretz/gists{/gist_id}","starred_url":"https://api.github.com/users/Narretz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Narretz/subscriptions","organizations_url":"https://api.github.com/users/Narretz/orgs","repos_url":"https://api.github.com/users/Narretz/repos","events_url":"https://api.github.com/users/Narretz/events{/privacy}","received_events_url":"https://api.github.com/users/Narretz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Narretz/angular.js","description":"","fork":true,"url":"https://api.github.com/repos/Narretz/angular.js","forks_url":"https://api.github.com/repos/Narretz/angular.js/forks","keys_url":"https://api.github.com/repos/Narretz/angular.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Narretz/angular.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Narretz/angular.js/teams","hooks_url":"https://api.github.com/repos/Narretz/angular.js/hooks","issue_events_url":"https://api.github.com/repos/Narretz/angular.js/issues/events{/number}","events_url":"https://api.github.com/repos/Narretz/angular.js/events","assignees_url":"https://api.github.com/repos/Narretz/angular.js/assignees{/user}","branches_url":"https://api.github.com/repos/Narretz/angular.js/branches{/branch}","tags_url":"https://api.github.com/repos/Narretz/angular.js/tags","blobs_url":"https://api.github.com/repos/Narretz/angular.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Narretz/angular.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Narretz/angular.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/Narretz/angular.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Narretz/angular.js/statuses/{sha}","languages_url":"https://api.github.com/repos/Narretz/angular.js/languages","stargazers_url":"https://api.github.com/repos/Narretz/angular.js/stargazers","contributors_url":"https://api.github.com/repos/Narretz/angular.js/contributors","subscribers_url":"https://api.github.com/repos/Narretz/angular.js/subscribers","subscription_url":"https://api.github.com/repos/Narretz/angular.js/subscription","commits_url":"https://api.github.com/repos/Narretz/angular.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/Narretz/angular.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/Narretz/angular.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/Narretz/angular.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/Narretz/angular.js/contents/{+path}","compare_url":"https://api.github.com/repos/Narretz/angular.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Narretz/angular.js/merges","archive_url":"https://api.github.com/repos/Narretz/angular.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Narretz/angular.js/downloads","issues_url":"https://api.github.com/repos/Narretz/angular.js/issues{/number}","pulls_url":"https://api.github.com/repos/Narretz/angular.js/pulls{/number}","milestones_url":"https://api.github.com/repos/Narretz/angular.js/milestones{/number}","notifications_url":"https://api.github.com/repos/Narretz/angular.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Narretz/angular.js/labels{/name}","releases_url":"https://api.github.com/repos/Narretz/angular.js/releases{/id}","deployments_url":"https://api.github.com/repos/Narretz/angular.js/deployments","created_at":"2013-11-28T09:39:41Z","updated_at":"2016-01-19T19:00:19Z","pushed_at":"2016-02-08T22:50:44Z","git_url":"git://github.com/Narretz/angular.js.git","ssh_url":"git@github.com:Narretz/angular.js.git","clone_url":"https://github.com/Narretz/angular.js.git","svn_url":"https://github.com/Narretz/angular.js","homepage":"http://angularjs.org","size":71908,"stargazers_count":1,"watchers_count":1,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"angular:master","ref":"master","sha":"3bfeda3b2b5c1826d3d87fd1d3a3298ce582c3ac","user":{"login":"angular","id":139426,"avatar_url":"https://avatars.githubusercontent.com/u/139426?v=3","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"repo":{"id":460078,"name":"angular.js","full_name":"angular/angular.js","owner":{"login":"angular","id":139426,"avatar_url":"https://avatars.githubusercontent.com/u/139426?v=3","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/angular/angular.js","description":"HTML enhanced for web apps","fork":false,"url":"https://api.github.com/repos/angular/angular.js","forks_url":"https://api.github.com/repos/angular/angular.js/forks","keys_url":"https://api.github.com/repos/angular/angular.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/angular/angular.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/angular/angular.js/teams","hooks_url":"https://api.github.com/repos/angular/angular.js/hooks","issue_events_url":"https://api.github.com/repos/angular/angular.js/issues/events{/number}","events_url":"https://api.github.com/repos/angular/angular.js/events","assignees_url":"https://api.github.com/repos/angular/angular.js/assignees{/user}","branches_url":"https://api.github.com/repos/angular/angular.js/branches{/branch}","tags_url":"https://api.github.com/repos/angular/angular.js/tags","blobs_url":"https://api.github.com/repos/angular/angular.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/angular/angular.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/angular/angular.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/angular/angular.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/angular/angular.js/statuses/{sha}","languages_url":"https://api.github.com/repos/angular/angular.js/languages","stargazers_url":"https://api.github.com/repos/angular/angular.js/stargazers","contributors_url":"https://api.github.com/repos/angular/angular.js/contributors","subscribers_url":"https://api.github.com/repos/angular/angular.js/subscribers","subscription_url":"https://api.github.com/repos/angular/angular.js/subscription","commits_url":"https://api.github.com/repos/angular/angular.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/angular/angular.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/angular/angular.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/angular/angular.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/angular/angular.js/contents/{+path}","compare_url":"https://api.github.com/repos/angular/angular.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/angular/angular.js/merges","archive_url":"https://api.github.com/repos/angular/angular.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/angular/angular.js/downloads","issues_url":"https://api.github.com/repos/angular/angular.js/issues{/number}","pulls_url":"https://api.github.com/repos/angular/angular.js/pulls{/number}","milestones_url":"https://api.github.com/repos/angular/angular.js/milestones{/number}","notifications_url":"https://api.github.com/repos/angular/angular.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/angular/angular.js/labels{/name}","releases_url":"https://api.github.com/repos/angular/angular.js/releases{/id}","deployments_url":"https://api.github.com/repos/angular/angular.js/deployments","created_at":"2010-01-06T00:34:37Z","updated_at":"2016-02-08T22:53:17Z","pushed_at":"2016-02-08T22:57:27Z","git_url":"git://github.com/angular/angular.js.git","ssh_url":"git@github.com:angular/angular.js.git","clone_url":"https://github.com/angular/angular.js.git","svn_url":"https://github.com/angular/angular.js","homepage":"http://angularjs.org","size":142681,"stargazers_count":46785,"watchers_count":46785,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":21758,"mirror_url":null,"open_issues_count":1133,"forks":21758,"open_issues":1133,"watchers":46785,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/angular/angular.js/pulls/13978"},"html":{"href":"https://github.com/angular/angular.js/pull/13978"},"issue":{"href":"https://api.github.com/repos/angular/angular.js/issues/13978"},"comments":{"href":"https://api.github.com/repos/angular/angular.js/issues/13978/comments"},"review_comments":{"href":"https://api.github.com/repos/angular/angular.js/pulls/13978/comments"},"review_comment":{"href":"https://api.github.com/repos/angular/angular.js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/angular/angular.js/pulls/13978/commits"},"statuses":{"href":"https://api.github.com/repos/angular/angular.js/statuses/08fed815f127f752d3ca3523a5b33447bd20e4b2"}}}}