2014-01-26 3 views
0

У меня есть функция loadNewChannel(), которая теперь запускается, когда в поле ввода вводится любое значение. Я хочу запустить его только тогда, когда значение проверяется через основной клиентский список.Запуск функции углового только после проверки на стороне клиента

Я нашел this, который должен покрывать мои потребности, но я не уверен, как реализовать его в качестве условия для срабатывания функции.

ANGULAR SCRIPT

var Channelinput = 'no-layout-archive'; 
var app = angular.module('arenaApp', ['ngResource', 'ngSanitize', 'infinite-scroll']); 

app.controller('channelShow', function($scope, $resource) { 
    var Channel = $resource('http://api.are.na/v2/channels/:slug'); 

    var channel = Channel.get({slug: Channelinput, sort: 'position', direction: 'asc'}, function(){ 
      $scope.channel = channel; 
      }); 

    $scope.loadNewChannel = function(){ 
       var channel = Channel.get({slug: 'no-layout-premium-archive', sort: 'position', direction: 'desc'}, function(){ 
       $scope.channel = channel; 
    }); 
    } 
}) 

HTML

<input placeholder="passcode" onfocus="this.placeholder = ' '" onblur="this.placeholder = 'passcode'" ng-keyup="loadNewChannel()" > 

Я знаю, что это не является безопасной системой, но это для небольшой бета, это не является проблемой. Живая ссылка (нажмите «Доступ к премиум» для визуализации в поле ввода): http://nolayout.com/archive

Любая помощь Добро пожаловать, спасибо

ответ

1

если проверка происходит на стороне клиента, и это обычай один, вы могли бы попробовать что-то как это:

var Channelinput = 'no-layout-archive'; 
var app = angular.module('arenaApp', ['ngResource', 'ngSanitize', 'infinite-scroll']); 

app.controller('channelShow', function($scope, $resource) { 
    var Channel = $resource('http://api.are.na/v2/channels/:slug'); 

    var channel = Channel.get({ slug: Channelinput, sort: 'position', direction: 'asc' }, function() { 
     $scope.channel = channel; 
    }); 

    $scope.loadNewChannel = function() { 
     var channel = Channel.get({ slug: 'no-layout-premium-archive', sort: 'position', direction: 'desc' }, function() { 
      $scope.channel = channel; 
     }); 
    }; 

    $scope.passcode = ''; 

    function validatePasscode(code) { 
     // put validation logic here, return true or false 
     return code == "somevalidpasscode"; 
    } 

    $scope.$watch('passcode', function(value) { 
     var isValid = validatePasscode(value); 

     if (isValid) { 
      $scope.loadNewChannel(); 
     } 
    }); 
}); 

и ваш вклад потеряет событие KeyUp и имеет атрибут нг-модель:

<input placeholder="passcode" onfocus="this.placeholder = ' '" onblur="this.placeholder = 'passcode'" ng-model="passcode" > 

Надеется, что это помогает

+0

Вы имеете в виду ng-model = "passcode"? – anoonimo

+0

Да! Правильно, извините – Fedaykin

+0

Спасибо. Если у вас есть терпение показать мне очень простой пример логики проверки, который мог бы работать там (например, код пароля === 'secretword' возвращает true), было бы здорово, я попытался, но не могу заставить его работать, я новичок с угловой. – anoonimo

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