簡體   English   中英

使用ng-include時如何使作用域函數起作用?

[英]How do I make a scope function work when using ng-include?

<!DOCTYPE html>
<html>
<link rel="stylesheet" type="text/css" href="keyboard.css">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link href='http://fonts.googleapis.com/css?family=Roboto+Slab|Roboto' rel='stylesheet' type='text/css'>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="keyboard.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
    <div ng-include src="'keyboard.html'"></div>
        First Name: <input type="text" ng-model="firstName"><br>
        Last Name: <input type="text" ng-model="lastName"><br>
        <br>
        Full Name: {{firstName + " " + lastName}}
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});
$scope.insertString = function(letter) {
        //$scope.name = $scope.name + letter;
        $scope.name = [$scope.name.slice(0,$scope.cursorPosVal),letter,$scope.name.slice($scope.cursorPosVal)].join('');
        console.log($scope.name);

        setTimeout(function(){ setCaretPosition("inputBox", $scope.cursorPosVal); }, 30);
    };
</script>

</body>
</html>

我知道這有點混在一起,(主要代碼只是w3schools的一個示例應用程序),但是它顯示了我正在嘗試做的事情。 因此,我有一個鍵盤應用程序要帶入文件(ng-include),它看起來絕對很棒。 我的問題是$scope無法識別。 我已經閱讀了“ Understanding Scopes” github文檔,但是對我來說只是很多。如果有人可以解釋我需要做些什么來確保我所有的$scope函數都能正常工作,我將不勝感激。

正如Fissio在評論中所說,您在控制器外部聲明了一個作用域函數:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});
/**** see this here ****/
$scope.insertString = function(letter) {
        //$scope.name = $scope.name + letter;
        $scope.name = [$scope.name.slice(0,$scope.cursorPosVal),letter,$scope.name.slice($scope.cursorPosVal)].join('');
        console.log($scope.name);

        setTimeout(function(){ setCaretPosition("inputBox", $scope.cursorPosVal); }, 30);
    };

這是您需要的:

var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.firstName = "John";
        $scope.lastName = "Doe";
        $scope.insertString = function(letter) {
            //$scope.name = $scope.name + letter;
            $scope.name = [$scope.name.slice(0,$scope.cursorPosVal),letter,$scope.name.slice($scope.cursorPosVal)].join('');
            console.log($scope.name);

            setTimeout(function(){ setCaretPosition("inputBox", $scope.cursorPosVal); }, 30);
        };
    });

您不能在控制器外部使用關鍵字$scope ,因為它已綁定到控制器。 當它在外面時,角度將不知道它是什么,這就是為什么它會說出類似無法識別的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM