2016-08-26 2 views
0

привязка данных не работает. имя модуля не отображается в моем приложении application.module не передается на имя html page.module, которое можно просмотреть в консоли. Но не на дисплее приложения. не отображается HTML кодпривязка данных не работает.module имя не переходит на страницу html

<ion-view ng-controller="coursedetailctrl as vm"> 
    <ion-content class="has-header"> 
<ion-list> 
     <div class="card"> 
      <ion-item> 
        {{modulename}} 

      </ion-item> 
     </div> 
</ion-list> 
<ion-infinite-scroll 
    icon="ion-loading-c" 
    on-infinite="loadMoreData()"> 
</ion-infinite-scroll> 

    </ion-content> 
</ion-view> 

страница

расслоение плотной
(function(){ 

var aapp = angular.module('leadGen'); 


aapp.controller('coursedetailctrl', function($state, $scope, ContentService, $stateParams){ 
    var dat; 
var vm=this; 
ContentService.getCourses($stateParams.cid).then(function(data) { 

         var myparam= $stateParams.cid; 
          dat=data; 

          $scope.coursedetail=dat;  
        }, this); 
$scope.selectModule= function(id){ 

    for(var j=0;j<dat.Modules.length;j++) 
    { 
    if(id==dat.Modules[j].id){ 
console.log(dat.Modules[j].name); 
$scope.modulename=dat.Modules[j].name; 
$state.go('module', {mid: id}); 

    } 
    } 
console.log(id); 
} 
}); 
}()); 

имя_модуля.

+0

Это первый раз определенный или уже определенный где-то еще 'var aapp = angular.module ('leadGen'); '? –

+0

Что такое вывод console.log ($ scope.modulename)? – scokmen

+0

вывод console.log - это такие имена модулей, как module1. – akashu

ответ

0

Попробуйте это (как вы определили ваш контроллер, как "VM"):

<ion-view ng-controller="coursedetailctrl as vm"> 
    <ion-content class="has-header"> 
<ion-list> 
     <div class="card"> 
      <ion-item> 
        **{{vm.modulename}}** 

      </ion-item> 
     </div> 
</ion-list> 
<ion-infinite-scroll 
    icon="ion-loading-c" 
    on-infinite="loadMoreData()"> 
</ion-infinite-scroll> 

    </ion-content> 
</ion-view> 

и ваш JS (нет необходимости использовать "$ scope.module"):

(function(){ 

var aapp = angular.module('leadGen'); 


aapp.controller('coursedetailctrl', function($state, $scope, ContentService, $stateParams){ 
    var dat; 
var vm=this; 
ContentService.getCourses($stateParams.cid).then(function(data) { 

         var myparam= $stateParams.cid; 
          dat=data; 

          vm.coursedetail=dat;  
        }, this); 
vm.selectModule= function(id){ 

    for(var j=0;j<dat.Modules.length;j++) 
    { 
    if(id==dat.Modules[j].id){ 
console.log(dat.Modules[j].name); 
**vm.modulename=dat.Modules[j].name;** 
$state.go('module', {mid: id}); 

    } 
    } 
console.log(id); 
} 
}); 
}()); 

И ваш ng-повтор и вызов функции:

<ion-list> <div class="card"> <ion-item ng-repeat="module in vm.coursedetail.Modules" ng-click="vm.selectModule(module.id)"> {{vm.module.name}} <div> {{vm.module.description}} </div> </ion-item> </div> </ion-list> 
+0

не работает @ Ruhul – akashu

+0

R u получает любую ошибку после применения выше кода ??? – Ruhul

+0

Также откуда вы вызываете эту функцию $ scope.selectModule? – Ruhul

0

Это похоже на проблему закрытия. Если вы используете ECMA6, тогда напишите цикл таким образом.

for(let j=0;j<dat.Modules.length;j++) 
    { 
     if(id==dat.Modules[j].id){ 
     console.log(dat.Modules[j].name); 
     $scope.modulename=dat.Modules[j].name; 
     $state.go('module', {mid: id}); 
     } 
    } 

ИЛИ вы можете использовать как этот один

(function(index){ 
    $scope.modulename=dat.Modules[index].name; 
})(j) 
+0

это мне не помогло. – akashu

0

Когда вы делаете контроллер ступенчатость (как вы сделали в своем коде). вы должны использовать псевдоним с моделью в поле зрения. Для того, чтобы запустить ваш код попробовать это

<ion-view ng-controller="coursedetailctrl as vm"> 
    <ion-content class="has-header"> 
<ion-list> 
     <div class="card"> 
      <ion-item> 
        {{vm.modulename}} 

      </ion-item> 
     </div> 
</ion-list> 
<ion-infinite-scroll 
    icon="ion-loading-c" 
    on-infinite="loadMoreData()"> 
</ion-infinite-scroll> 

    </ion-content> 
</ion-view> 

и контроллер Defination УИ может использовать this ключевое слово для обозначения контроллера в вашем случае

var vm=this; 

использование vm связывать имя_модуля

(function(){ 

var aapp = angular.module('leadGen'); 


aapp.controller('coursedetailctrl', function($state, $scope, ContentService, $stateParams){ 
    var dat; 
var vm=this; 
ContentService.getCourses($stateParams.cid).then(function(data) { 

         var myparam= $stateParams.cid; 
          dat=data; 

          $scope.coursedetail=dat;  
        }, this); 
$scope.selectModule= function(id){ 

    for(var j=0;j<dat.Modules.length;j++) 
    { 
    if(id==dat.Modules[j].id){ 
console.log(dat.Modules[j].name); 
vm.modulename=dat.Modules[j].name; 
$state.go('module', {mid: id}); 

    } 
    } 
console.log(id); 
} 
}); 
}()); 

Надежда это помогает

+0

- любая проблема с выражением $ state.go – akashu

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