Ionic $ scope.function срабатывает только один раз, затем выдает ошибку при новых кликах

0

На прошлой неделе я создал функцию, которая принимает истинное/ложное значение из пары кнопок (одна для true, одна для false) и помещает ее в переменную $ scope.

Он отлично работал.

  $scope.trueOrFalse = function(truefalse) {
    if (truefalse == false){
      $scope.value = false;
      document.getElementById("makeFalse").className = "button active";
      document.getElementById("makeTrue").className = "button";
      console.log($scope.isBusiness);
    } else if(truefalse == true){
      $scope.value = true;
      document.getElementById("makeTrue").className = "button active";
      document.getElementById("makeFalse").className = "button";
      console.log($scope.value);
    }
  }

Но теперь у меня в основном такая же точная вещь на другой странице, и она работает только один раз при первом щелчке, где, если выбранное значение ложно, я получаю console.log, что оно ложно, тогда ничего не происходит, если щелкнуть снова, чтобы изменить значение.

Но если выбранное значение истинно, то при попытке следующего щелчка я начинаю:

TypeError: fn не является функцией

at $parseFunctionCall (ionic.bundle.js:21045); 
at ionic.bundle.js:53458; 
at Scope.$get.Scope.$eval (ionic.bundle.js:23100); 
at Scope.$get.Scope.$apply (ionic.bundle.js:23199); 
at HTMLAnchorElement.<anonymous> (ionic.bundle.js:53457); 
at HTMLAnchorElement.eventHandler (ionic.bundle.js:11713); 
at triggerMouseEvent (ionic.bundle.js:2863); 
at tapClick (ionic.bundle.js:2852); 
at HTMLDocument.tapMouseUp (ionic.bundle.js:2925); 

Что здесь происходит?

Здесь HTML

<ion-view view-title="Biz Post/Uploading">
  <ion-content>
         

  <!-- Begin Second Set of Tabs -->
  <div class="button-bar">
    <a class="button" id="item" data-ng-click="isDeal(false)">Item</a>
    <a class="button" id="deal" data-ng-click="isDeal(true)">Deal</a>
  </div>
  <!-- End Second Set of Tabs -->

  <!-- Section -->
  <div class="list-inset">
    <center><img src="http://placehold.it/350x150"></center>
  </div>


    <div class="list">
     <div class="item item-divider">
         Add thing
       </div>
      <label class="item item-input item-stacked-label">
        <span class="input-label">thing</span>
        <input type="text" placeholder="add location" ng-model="thing.thing2">
      </label>
      <label class="item item-input item-stacked-label">
        <span class="input-label">thing</span>
        <input type="text" placeholder="add price" ng-model="thing.thing3">
      </label>
      <label class="item item-input item-stacked-label">
        <span class="input-label">thing</span>
        <input type="text" placeholder="add item description" ng-model="item.thing">
      </label>
      <label class="item item-input">
  <span class="input-label">Date</span>
  <input type="date">
</label>
     <label class="item item-input item-stacked-label">
        <span class="input-label">thing</span>
        <input type="text" placeholder="set limit" ng-model="thing.thing4">
      </label>

          <button class="button button-full button-balanced" data-ng-click="pushData()">
           push data
          </button>

    
       </div>
  </ion-content>
</ion-view>
Теги:
ionic

1 ответ

0

С ng-классом код будет выглядеть так: http://plnkr.co/edit/6sOzUmAcIzVjLEOL9Jva?p=preview

    <div ng-controller="MainCtrl">
      <button id="makeTrue" ng-class="{button :true, active: truefalse}" ng-click="truefalse = !truefalse">Make true</button>
      <button id="makeFalse" ng-class="{button :true, active: !truefalse} " ng-click="truefalse = !truefalse">Make false</button>
    </div>

В контроллере: $scope.truefalse = true; , Если truefalse истинно, то makeTrue имеет активный класс (который кажется немного выключенным, но он тот же в вашем коде), в противном случае makeFalse активен.

Таким образом, вы не играете с DOM в своем контроллере (чего следует избегать). И ваш пробел $ меньше загроможден.

Для ng-click вы можете определить функцию в $ scope и вызвать ее вместо изменения truefalse в выражении (но это зависит от вас)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню