Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ng include时,如何使作用域函数工作? 名字: 姓氏: 全名:{{firstName+“”+lastName} var-app=angular.module('myApp',[]); 应用程序控制器('myCtrl',函数($scope){ $scope.firstName=“John”; $scope.lastName=“Doe”; }); $scope.insertString=函数(字母){ //$scope.name=$scope.name+字母; $scope.name=[$scope.name.slice(0,$scope.cursorPosVal),letter,$scope.name.slice($scope.cursorPosVal)].join(“”); log($scope.name); setTimeout(函数(){setCaretPosition(“inputBox”,$scope.cursorPosVal);},30); };_Javascript_Html_Css_Angularjs - Fatal编程技术网

Javascript 使用ng include时,如何使作用域函数工作? 名字: 姓氏: 全名:{{firstName+“”+lastName} var-app=angular.module('myApp',[]); 应用程序控制器('myCtrl',函数($scope){ $scope.firstName=“John”; $scope.lastName=“Doe”; }); $scope.insertString=函数(字母){ //$scope.name=$scope.name+字母; $scope.name=[$scope.name.slice(0,$scope.cursorPosVal),letter,$scope.name.slice($scope.cursorPosVal)].join(“”); log($scope.name); setTimeout(函数(){setCaretPosition(“inputBox”,$scope.cursorPosVal);},30); };

Javascript 使用ng include时,如何使作用域函数工作? 名字: 姓氏: 全名:{{firstName+“”+lastName} var-app=angular.module('myApp',[]); 应用程序控制器('myCtrl',函数($scope){ $scope.firstName=“John”; $scope.lastName=“Doe”; }); $scope.insertString=函数(字母){ //$scope.name=$scope.name+字母; $scope.name=[$scope.name.slice(0,$scope.cursorPosVal),letter,$scope.name.slice($scope.cursorPosVal)].join(“”); log($scope.name); setTimeout(函数(){setCaretPosition(“inputBox”,$scope.cursorPosVal);},30); };,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,我知道这有点复杂,(主代码只是w3schools的一个示例应用程序),但它显示了我正在尝试做的事情。所以我有一个键盘应用程序,我把它带到文件中(ng include),它看起来非常棒。我的问题是,$scope未被识别。我已经阅读了github的“理解范围”文档,但这对我来说只是有点难理解。如果有人能解释我需要做什么来确保我所有的$scope函数都能正常工作,我将不胜感激。正如Fissio在评论中所说,您在控制器之外声明了一个scope函数: <!DOCTYPE html> <h

我知道这有点复杂,(主代码只是w3schools的一个示例应用程序),但它显示了我正在尝试做的事情。所以我有一个键盘应用程序,我把它带到文件中(ng include),它看起来非常棒。我的问题是,
$scope
未被识别。我已经阅读了github的“理解范围”文档,但这对我来说只是有点难理解。如果有人能解释我需要做什么来确保我所有的
$scope
函数都能正常工作,我将不胜感激。

正如Fissio在评论中所说,您在控制器之外声明了一个scope函数:

<!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>
这就是您需要的:

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);
    };

您不能在控制器外部使用关键字
$scope
,因为它已绑定到控制器。当它在外部时,angular将不知道它是什么,这就是为什么它会说它无法识别的原因

您的
$scope.insertString
似乎出于某种原因在控制器外部?试着把它移到控制器里。我已经把代码添加到了正确的位置,我没有出错,谢谢你。不管出于什么原因,它都不能正常工作。谢谢你的帮助,我将自己来处理这件事,看看是否能解决。@abejdaniels我建议你从一开始就学习angular的最佳实践。我写了一个简单的项目来帮助您启动:。请注意创建控制器的不同语法和方法
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);
        };
    });