javascripthtmlangularjssteroids

Change scope value in a different view


Ok, I have struggeled a lot with this thing for some days now and I'm stuck. Here is what I want; I want to change my scope value in a different view by clicking on a button. So if I'm in the index.html view and click on a button I want to change the value of a scope on the index2.html view, and then display that view. Here is an example of my code which is not working

index.html

<div ng-controller="IndexController">
<button class="button button-block button-assertive" ng-click="checkValues()" value="checkitems" >
  check values
</button>
</div>

IndexController.js

angular
  .module('legeApp')
  .controller('IndexController', function($scope, supersonic, $filter) {  

 $scope.checkValues = function(){   

     $scope.Diagnose = 'test';

        var view = new supersonic.ui.View("legeApp#index2.html");
        var customAnimation = supersonic.ui.animate("flipHorizontalFromLeft");
        supersonic.ui.layers.push(view, { animation: customAnimation });
    };
});

index2.html

<div ng-controller="IndexController">
<div class="card">
  <div class="item item-text-wrap">
    Test<b>{{Diagnose}} </b>
  </div>
</div>
    </div>

I can give the value outside the checkValues method, but I want it to be two different values depending on the button you click. Please help

I tried the code suggested, but I received an error. What am I doing wrong?

I try the code below and receive this error "SyntaxError: Unexpected token ':' - undefined:undefined". I also did not quite understand how and why I want to target the new value with supersonic.ui.views.params.current in the new view. I want to get the new value in the new view, not in a controller?Do I need two different controllers? I just want to update my values in a html view without being in it.

supersonic.ui.layers.push: 
( view: view, 
options: { params: {$scope.Diagnose : 'test'} 
animation: customAnimation 
}) => Promise

Solution

  • According to the supersonic push docs, the params attribute is meant for passing parameters between views:

    JSON string of optional parameters to be passed to the target View, 
    accessible via supersonic.ui.views.params.current.
    

    Try calling

    supersonic.ui.layers.push: (
      view: view,
      options: {
        params: {valueToBeSentAccrossView: <Your Value>}
        animation: customAnimation
    }) => Promise
    

    and then retrieving the value in the target view using supersonic.ui.views.params.current.