2016-04-01 4 views
4

У меня есть html, где я должен показать шаблон AngularJS, только когда я дойду до нижней части страницы (я реализовал бесконечную прокрутку).ng-if not working, ng-show works

Первая страница взята с сервера. Поэтому я должен поставить ng-if для этой первой страницы, потому что у пользователя может быть закладка с «адресом/страницей = 5», а шаблон html для первой страницы с сервера не обязательно должен быть на странице.

Теперь у меня есть URL-адрес «URL», предназначенный только для страницы с сервера.

ng-if не работает, страница пуста, но если я использую ng-show все работает отлично.

HTML

<div ng-app="MyApp" ng-controller="MyCtrl"> 
    <div id="itemsGrid" ng-controller="aCtrl" infinite-scroll='item_gallery.nextPage()' infinite-scroll-distance='1' infinite-scroll-disabled=''> 

     <div ng-show="server_page()"> 
     //here the first page template 

JS

myApp.controller('MyCtrl', function($scope, ItemGallery) { 
    $scope.item_gallery = new ItemGallery(); 
    ... 
} 

myApp.factory('ItemGallery', function($http) { 
    var ItemGallery = function() { 
    ... 
     ItemGallery.prototype.nextPage = function() { 
     ... 
     } 
    return ItemGallery; 
} 

Если я комментарий

//$scope.item_gallery = new ItemGallery(); 

нг-если работает нормально, страница правильно показал.

Страница отображается, когда я использую: ng-if + комментарий, ng-show.

Примечание:

ng-if="true" не работает, это не проблема, функции используется, ng-if="server_page()" Я не хочу использовать нг-шоу.

Почему ng-if не работает? В чем проблема с этой линией? Как я могу заставить его работать?

+1

может у вас добавить скрипку/плунжер, пожалуйста, легче следовать – Radu

ответ

1

Хорошо, у меня есть решение.

Консоль была мне говорят:

Не удается прочитать свойство 'отн' в нуль.

Это произошло потому, что первое, что я делал в var ItemGallery = function(), было изменить href на следующей странице (следующая страница приходит из запроса AJAX). href для следующей страницы находится в пределах <div> в нижней части текущей страницы.

Дело в том, что я меняю href на следующую страницу, ПЕРЕД текущей страницей загружен.

Так ..

window.onload = function() { 
       this.nextPageQueryString = document.getElementById("nextPage").rel; 

       this.next_href = this.domain_url + this.nextPageQueryString; 
      }; 

Примечание: это решить мою проблему, но я считаю, это очень странно. ng-if не смог увидеть свойство 'rel' для следующего href, и я получил пустую страницу. Теперь Angular может видеть свойство rel, и все работает отлично.

ng-if должен работать отдельно от того, что у меня есть в html.

Я до сих пор не могу понять поведение ng-if.

4

нг-если создает новую область ребенка

держать часы на модели в нг, если эмпирическое правило является:

НЕ ИСПОЛЬЗОВАТЬ СФЕРА КАК МОДЕЛЬ например

ng-if='showStuff' //here my scope is model **INCORRECT** 
ng-if='someObject.showStuff' // ** CORRECT ** 

использовать свойство объекта в нг-модели, то даже если нг-если создает новый ребенок сфера родитель сфера будет иметь изменения.

С другой стороны, ng-show не создает новую дочернюю область, она работает в родительской области.

в вас случае, пожалуйста, измените

$scope.item_gallery = new ItemGallery(); 

в

$scope.someObject.item_gallery = new ItemGallery(); 

, то он должен работать.

+0

не работает для меня, но я подумаю об этом, спасибо – FrancescoN

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

  • Нет связанных вопросов^_^