 <p>It's because you use <a href="http://underscorejs.org/#without" rel="nofollow">http://underscorejs.org/#without</a>, which creates a copy of the array instead of just removing the item. When you remove an item a new array will be linked to the scope, and the new array is not linked with array in the isolate scope.</p> <p>To solve this problem you can use splice instead, which removes the item from the original array:</p> <pre class="lang-js prettyprint-override"><code>$scope.removeSkill = function() { $scope.profile.skills.splice(_.indexOf($scope.profile.skills, this.skill),1); }; </code></pre> <p>...</p> <pre><code>$scope.removeItem = function() { $scope.list.splice(_.indexOf($scope.list, this.item),1); }; </code></pre> <p>Updated plunker: <a href="http://jsfiddle.net/jtjf2/" rel="nofollow">http://jsfiddle.net/jtjf2/</a></p>