2013-06-18 2 views
0

У меня есть поле ввода, которое динамически меняется на какое-то событие.Как отслеживать динамическое изменение значения поля ввода с помощью angularjs

<input name="selectedId" id="selectedId" ng-model="selectedId" type="hidden" on-change="setUrl"> 

Теперь я хочу перенаправить страницу на этот идентификатор, присутствующий в поле ввода, когда он изменяется.

Мой контроллер:

var app = angular.module("myApp", []). 
    config(function($routeProvider, $locationProvider) { 
    $routeProvider. 
     when("/a1", { templateUrl: "partials/page1.html"}). 
     when("/a2", { templateUrl: "partials/page2.html"}). 
     otherwise({ redirectTo: "/a1" }); 
    }); 
app.controller("MainCtrl", function($scope, $location) { 
    $scope.setUrl=function($scope){ 
    if ($scope.selectedId) { 
     alert($scope.selectedId); 
    } 
    else{ 
    alert("Out of scope"); 
    } 
    //$location.path($scope.selectedId); 
    }; 

Здесь я не могу поставить значение в поле ввода размаху. Я даже не могу запустить setUrl(), чтобы перенаправить URL-адрес.

Я новичок в AngularJS, поэтому мне нужно понять концепцию.

+0

Его работа для события нажатия клавиши, но не для динамических значений через javascript. – Sumant

ответ

1

Возможные на работу вокруг

Зарегистрировать часы на входе модели и изменить расположение внутри этой функции часов

app.controller("MainCtrl", function($scope, $location) { 
$scope.$watch('selectedId',function(newvalue,oldvalue){ 
    $location.path(newvalue); 
} 
    }; 

<input name="selectedId" id="selectedId" ng-model="selectedId" type="hidden" > 
+0

Я попробовал, но не работал. любая ссылка. на изменение его не вызывающей функции контроллера. – Sumant

3
  1. Вы используете on-change. У AngularJS есть директива ngChange. Используй это.
  2. После использования ngChange также замените setUrl на setUrl().
  3. Затем удалите параметр $ scope из setUrl функции. $ scope определяется внутри MainCtrl, поэтому он неявно доступен для всех функций, определенных в нем. Вам не нужно вводить его.
  4. Вы используете скрытый ввод, чтобы получать новый id откуда-то, только для передачи его на setUrl. Вам не нужен этот скрытый ввод. Рассмотрите возможность использования общих служб AngularJS или трансляции событий или используйте $ scope. $ Watch.
Смежные вопросы