I'm getting a very weird issue where the ui-view template of my $state controller is interacting with the $rootScope, rather than $scope.
BUT it will injest $scope variables at init time.
for example: if I have $scope.name = "test"
and in my template
<input ng-model="name">
the input will successfully have "test" inserted fine.
however, when I have a $scope.$watch("name") it does not fire, instead only $rootScope watch on "name" will fire... Did I wire my routes incorrectly?
I have a main "app" that gets its main dependency (my component):
angular.module('p1poc', ['ngAnimate', 'ngMaterial', 'ngWebSocket' ... 'myModule');
The module in question is "myModule":
angular.module('myModule', ['ui.router', 'infinite-scroll', 'pasvaz.bindonce'])
.config(['$stateProvider', function ($stateProvider) {
$stateProvider.state('search', {
url: '/search?query',
controller: 'MainCtrl',
templateUrl: 'main/main.html',
label: 'Search',
access: {free: true}
});
}])
as you can see, I am injecting the controller in, as well as the template
my template as for example html elements like such:
<md-select placeholder="Sort By" ng-model="orderBy">
<md-option value="_score" checked>Relevance</md-option>
<md-option value="citingsrcscount">Cited Count</md-option>
<md-option value="sortdate">Publication Date</md-option>
</md-select>
But as I described above, the ng-model updates $rootScope.orderBy rather than $scope.orderBy.
but at init time, it is successfully getting data from $scope.orderBy...just not bound 2 ways
try assigning an empty value for the $scope.name before you are going to use it in HTML