3

我查看了其他“未定义功能”问题,但似乎找不到适用于我的用例的问题。我正在使用 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>

运行时,单击复选框会导致函数未定义错误。

我在这里想念什么?谢谢。

4

2 回答 2

1
<!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/

于 2013-07-10T03:50:33.647 回答
0

如果您使用 AngularJs,最好在控制器范围内定义函数。$scope 的字段可以是您的函数,而不是onChange,您可以使用ngChange指令(只有您必须在该输入上设置 ngModel)。

$scope.doSomething = function() {
    alert("hello!");
}
于 2015-08-12T15:58:21.003 回答