2013-07-10 2 views
2

Я просмотрел другие вопросы «функция не определена», но, похоже, не может найти тот, который применим к моему прецеденту. Я использую angular.js.Функция неопределенной ошибки для функции, которая определена внутри регулятора углов.

У меня есть изначально пустой div, #mylist, который я динамически заполняю в js. У меня есть функция, определенная внутри контроллера, которую я назначаю для события onChange.

Вот полный документ:

<!doctype html> 
<html data-ng-app="testapp"> 
<head> 
    <script src="jquery-1.10.2.min.js"></script> 
    <script src="angular.min.js"></script> 
    <script> 
     var app = angular.module("testapp", []);   
     app.controller("MyAppController", function ($scope) { 
      createCheckbox(); 

      function doSomething() { 
       alert("hello!"); 
      } 

      function createCheckbox() { 
       $("#mylist").html("<input type='checkbox' onChange='javascript:doSomething();' />"); 
      }  
     }); 
    </script> 
</head> 

<body data-ng-controller="MyAppController"> 
    <div id="mylist"></div> 
</body> 
</html> 

При запуске, нажав на результаты CheckBox в функции не определены ошибки.

Что мне здесь не хватает? Благодарю.

+0

Я думаю, что некоторые перефразирование «Вы делаете это неправильно» - это самая распространенная вещь, которую говорят вокруг угловых дискуссий (и это обычно так). Поэтому в основном вы не должны использовать jQuery для захвата элемента в DOM ... один секунда думаю, что я могу ответить довольно легко. – shaunhusain

+0

На данный момент я использую угловые только для маршрутизации. Очевидно, что я не продвинутый js-разработчик, и я не мог определить, была ли ошибка с угловым или jq или простым js. Я думаю, что разумно просить о помощи в этот момент, чтобы привести меня в направлении. – Steven

+0

@Steven Я не хотел быть унизительным/грубым, просто сказал, что я слышал, что что-то в этом роде произнесло совсем недавно, и фраза «угловой путь», которая делает это звуком как культ. Я тоже не эксперт JS, но пропущен прямо с AS3/Flex до AngularJS. jQuery всегда казался мне немного бесполезным (не то, что Angular - все леденцы на палочке, но он чувствует себя более организованным и гораздо менее подверженным ошибкам). В любом случае, надеюсь, что мой ответ имеет смысл, в основном я использую привязку для запуска функции, которая смотрит эту переменную, поэтому, когда она изменяется, я запускаю функцию. – shaunhusain

ответ

0
<!doctype html> 
<html data-ng-app="testapp"> 
<head> 
    <script src="jquery-1.10.2.min.js"></script> 
    <script src="angular.min.js"></script> 
    <script> 

var app = angular.module("testapp", []); 

app.controller("MyAppController", function ($scope) { 
    $scope.someProperty = true; 


    $scope.$watch("someProperty", function (someProperty){ 
     alert("hello!"+someProperty) 
    }); 
}); 

    </script> 
</head> 
<body data-ng-controller="MyAppController"> 
    <div id="mylist"><input type="checkbox" ng-model="someProperty"/></div> 
</body> 

</body> 
</html> 

http://jsfiddle.net/y6XhY/

+0

Спасибо, что собрали рабочий образец. Я рассмотрю это. – Steven

+0

oh также в этом случае (с флажком) вы могли бы просто использовать ng-click для вызова функции в пределах области из HTML, например ng-click = "doSomething()" (или для флажка Я верю ng-change = " doSomething() ") Я показывал просмотр версии свойства, предполагающей исходный тип" текст "изначально. – shaunhusain

0

Если вы используете AngularJs, это хорошая практика для определенной функции внутри вас контроллер сфера. Поле $ осциллографа может быть ваша функция и вместо OnChange вы можете использовать ngChange директиву (только вам нужно установить ngModel на этот вход).

$scope.doSomething = function() { 
    alert("hello!"); 
} 
Смежные вопросы