2015-09-20 3 views
0

Здесь app.jsДобавление нового значения в модели не показывает

angular.module('mobApp', ['ionic', 'mobApp.controllers', 'mobApp.services', 'ngCordova']) 

.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 

    }); 
}) 

.config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 

    .state('listitems', { 
     url: '/listitems', 
     templateUrl: 'templates/listitems.html' 
    }) 

    .state('publishmsg/form/new-message', { 
     url: '/publishmsg/form/new-message', 
     templateUrl: 'templates/publish-msg/publishmsg-form.html', 
     controller: 'publishMessageFormController' 
    }) 

    .state('publishmsg/form/add-tags', { 
     url: '/publishmsg/form/add-tags', 
     templateUrl: 'templates/publish-msg/publishmsg-form-tags.html', 
     controller: 'publishMessageFormController' 
    })  

    .state('publishmsg/form/add-location', { 
     url: '/publishmsg/form/add-location', 
     templateUrl: 'templates/publish-msg/publishmsg-form-location.html', 
     controller: 'publishMessageFormController' 
    }); 

    $urlRouterProvider.otherwise('/listitems'); 
}); 

Здесь publishMessageFormController:

angular.module("mobApp.controllers",['ionic','ngTagsInput','google.places']) 
.controller("publishMessageFormController",function($scope, $http, $location, $ionicLoading, $cordovaToast, $compile, deviceStatus, $cordovaImagePicker, $ionicHistory){ 

$scope.finalPubFormModal = {}; 

$scope.geoSelectionDone = function() 
{ 

     $scope.finalPubFormModal.location = "fObj"; 
     console.log("Log1"+JSON.stringify($scope.finalPubFormModal));  
} 

$scope.submitNewPublishMessage = function() 
{ 
    console.log("Log2"+JSON.stringify($scope.finalPubFormModal)); 
} 

Здесь publishmsg-form-location.html:

<ion-view view-title="Search Location"> 
    <ion-nav-buttons side="right"> 
    <button class="button button-icon icon ion-android-done" ng-disabled="npubmUsrLocForm.form.$invalid" ng-click="geoSelectionDone()"></button> 
    </ion-nav-buttons> 
    <ion-content> 
    <form name="npubmUsrLocForm.form" class="css-form" novalidate> 
     <div class="list"> 
      <label class="item item-input"> 
       <input placeholder="Type location name" type="text" ng-model="userCustmLocModel.location" ng-minlength="3" required/> 
      </label> 
     </div> 
    </form> 
    </ion-content> 
</ion-view> 

Здесь publishmsg-form.html:

<ion-view view-title="Publish message"> 
    <ion-nav-buttons side="right">  
    <button class="button button-icon icon ion-android-done" ng-disabled="npubmForm.msgForm.$invalid" ng-click="submitNewPublishMessage()"></button> 
    </ion-nav-buttons> 

Проблема находится внутри контроллера log1 печатает новое значение location но log2 не

ответ

0

Я думаю, что причина в том, что каждая из страниц имеет отдельный экземпляр контроллера. Вы можете попробовать поделиться данными через службу. Что-то вроде

angular.module('mobApp.services').service('finalPub', function() { 
    this.finalPubFormModal = {};  
    this.geoSelectionDone = function(value) 
    { 
     this.finalPubFormModal.location = value; 
    } 
}); 

затем включить эту услугу в контроллерах

.controller("publishMessageFormController",function($scope, $http, $location, $ionicLoading, $cordovaToast, $compile, deviceStatus, $cordovaImagePicker, $ionicHistory,finalPub){ ... 

, а затем использовать Сервье в контроллерах

$scope.geoSelectionDone = function() 
{ 
     finalPub.geoSelectionDone("fObj"); 
} 
+0

но в app.js вы можете увидеть все страницы я нахожусь ссылаясь на тот же контроллер – manish

+0

Это правда, но, насколько я помню, для каждого из маршрутов будет создан новый экземпляр контроллера - чтобы дать вам параллель в ООП, подумайте об этом так: вы определили класс паб lishMessageFormController, затем создал var controller1 = new publishMessageFormController(), var controller2 = new publishMessageFormController() - если вы установите что-то в контроллере1, ничего не изменится в контроллере2. –

Смежные вопросы