2015-06-05 5 views
-1

У меня есть сценарий, который запрашивает мой сервер для получения различных значений. В пользовательском интерфейсе - есть ползунок JQuery, где пользователь может изменить одно из значений - я хотел бы повторно запросить скрипт сервера/PHP.

Вот что у меня есть.

var app = angular.module("myServices", ['ui.bootstrap']); 

app.controller("servicesCntrl", function($scope, $http) { 
    $http.get("http://myservice.com/scripts.php?dist="+28) 
    .success(function(response) {$scope.names = response.contractors;}); 
}); 


function updateVal() { 
    var scope = angular.element($("#batch")).scope(); 
    scope.$apply(function($http){ 
     $http.get("http://myservice.com/scripts.php?dist="+28) 
    .success(function(response) {$scope.names = response.contractors;}); 
    }) 
} 

Контроллер отлично работает и захватывает значения, как ожидалось. Сценарий updateVal (который вызывается в событии onChange) получает зависание, говоря, что $ http.get не является функцией.

Что мне не хватает? :) Заранее спасибо!

--- редактировать

Хорошо - я сделал пару модификаций - но до сих пор не имеют. Извините - я довольно новичок в угловой :)

Вот что у меня есть. Слайдер - и угловой.

<div class="ui-field-contain" data-controltype="slider"> 
       <label for="slider1"> 
        Adjust Distance 
       </label> 
       <input id="slider1" type="range" name="slider" value="5" min="0" max="50" 
       data-highlight="false" onchange="updateVals()"> 
      </div> 

и угловой

app.controller("servicesCntrl", function($scope, $http) { 
    $scope.updateVals = function() { 
     console.log("Booyah"); 
    } 
    $http.get("http://example.com/scripts.php?dist="+28) 
    .success(function(response) {$scope.names = response.contractors;}); 
}); 

--- Редактировать 3 - Спасибо за помощь :)

слайдера с нг-модели - и нг-изменение

<div class="ui-field-contain" data-controltype="slider"> 
       <label for="slider1"> 
        Adjust Distance 
       </label> 
       <input id="slider1" type="range" name="slider" value="5" min="0" max="50" 
       data-highlight="false" ng-model="myslider" ng-change="updateVals"> 
      </div> 

и угловой

некоторые вещь по-прежнему не хватает ..

app.controller("servicesCntrl", function($scope, $http) { 
    $scope.updateVals = function() { 
     console.log("Booyah"); 
    } 
    $http.get("http://example.com/scripts.php?dist="+28) 
    .success(function(response) {$scope.names = response.contractors;}); 
}); 
+0

Почему обновление VAL вне контроллера? Он не имеет доступа к $ http – Irshu

ответ

1

Вашей updateVal() функции находится вне контроллера, где вы вводили $http услугу, так что вы не имеете доступа к нему. Переместите функцию updateVal в контроллер.

+0

onChange не является атрибутом ng. Попробуйте связать функцию с {{}} – m0meni

+0

Первоначально я пытался использовать ng-change - но пока это не было ошибкой - ничего не делалось. Я предположил, что jquery противоречит ему. – EZoolander

+0

«Выражение ngChange оценивается только тогда, когда изменение входного значения вызывает привязку нового значения к модели». Вам нужно указать ng-model, если вы хотите, чтобы она работала. Рабочий пример с диапазоном ввода находится здесь http://forum.ionicframework.com/t/working-with-ng-model-and-input-type-range/949 – m0meni

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