2015-08-25 3 views
1

Я пытаюсь интегрировать AngularJs в наследстве Spring MVC приложение, потому что есть много спагетти яваскрипт код (огромный беспорядок!), Чтобы скрыть/html элементов шоу в зависимости от условий и т.д.AngularJs смотреть angular.element

Он использует jsp и множество пользовательских тегов jsp, и потому, что, как он написан, я не решаюсь вмешиваться в теги jsp.

Я пытаюсь сделать, это считывать значения пружинного входа в угловую область, и как только у меня есть это, тогда можно использовать угловое, чтобы скрыть/показать материал.

Предположим, что мой HTML-то вроде этого

<div ng-app ng-controller="FooCtrl"> 
    Backbone <input type="radio" name="yes" value="Backbone"/> 
    Angular <input type="radio" name="yes" value="Angular" /> 
</div> 

Я могу читать эти элементы в рамках угловых как этого

$scope.elements = angular.element("input[name='yes']"); 

Но изменить на значение этих элементов не получают вызванный или наблюдаемый угловым.

В идеале, когда переключатель установлен, я хотел бы, чтобы модель изменилась. Как я могу это сделать?

Заранее спасибо.

Это plnkr с базовой настройкой. http://plnkr.co/edit/CRPBFF9FaGivBRa8OSdZ?p=preview

ответ

2

Одно дело, что в вашем контроллере вы имели:

$scope.$watch('$scope.elements',function(newValue){ 
    console.log(newValue); 
},true); 

Это должно быть 'elements', а не '$scope.elements'. Я не совсем уверен, что ваш лучший выбор здесь будет $ watch или $ watchCollection. Я попробовал, но у меня были проблемы.

Вот еще одна идея:

var app = angular.module('myApp',[]); 
app.controller('FooCtrl', function($scope){ 
$scope.message = "hi"; 
$scope.elements = angular.element("input[name='yes']"); 

angular.element("input[name='yes']").bind("input change", function(e) { 
    console.log(e); 
    }); 

});

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