Note that the value of a select directive used without ngOptions is
always a string. When the model needs to be bound to a non-string
value, you must either explicitly convert it using a directive (see
example below) or use ngOptions to specify the set of options. This is
because an option element can only be bound to string values at
present.
So changing $scope.datamodel = 2; to $scope.datamodel = '2'; works. See updated plunker.
However, it's better to use ngOptions instead. Again, from the docs:
In many cases, ngRepeat can be used on <option> elements instead of
ngOptions to achieve a similar result. However, ngOptions provides
some benefits, such as more flexibility in how the <select>'s model is
assigned via the select as part of the comprehension expression, and
additionally in reducing memory and increasing speed by not creating a
new scope for each repeated instance.
So to keep your model as an integer, you can rather use:
<select ng-model="datamodel" ng-options="dataitem for dataitem in data">
<option value="">Please Select</option>
</select>