Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angularjs $scope variables not updating in view

I'm new to Angularjs and im trying to update two $scope variables in two seperate functions which are called on ng-click.

Even though the variables update, they wont rebind in the view.

HTML

<div ng-app="">
<div ng-controller="MainCtrl">
     <p> <a href="#" ng-click="getDetails();getElse()">Refresh</a> </p>
    <p ng-controller="MainCtrl"><span ng-bind="something"></span></p>
       <p ng-controller="MainCtrl"><span ng-bind="somethingelse"></span></p>
</div>
</div>

JS function MainCtrl($scope) {

$scope.something = "something";
$scope.somethingelse = "else";

$scope.getDetails = function () {
     alert("getdetails before change: "+$scope.something);
    $scope.something = 'changed';
    alert("getdetails: "+$scope.something);
};

$scope.getElse = function () {
    alert("getElse before change: "+$scope.somethingelse);
    $scope.somethingelse = 'changed';
    alert("getElse: "+$scope.somethingelse);
    };

}

I've created a fiddle to show you what i mean: http://jsfiddle.net/M3pZ8/

can anyone tell me what is the correct way to do this?

Thanks in advance.

like image 593
Mr.Haze Avatar asked Dec 16 '22 00:12

Mr.Haze


1 Answers

It's because you have MainCtrl declared 3 times, effectively creating 3 separate scopes. You only need it once, at the top.

<div ng-controller="MainCtrl">
    <p> <a href="#" ng-click="getDetails();getElse()">Refresh</a> </p>
    <p><span ng-bind="something"></span></p>
    <p><span ng-bind="somethingelse"></span></p>
</div>
like image 125
tymeJV Avatar answered Jan 07 '23 21:01

tymeJV