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 に答える