Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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 如何使用scope';指令中的变量是什么?_Javascript_Angularjs_Scope_Angularjs Directive - Fatal编程技术网

Javascript 如何使用scope';指令中的变量是什么?

Javascript 如何使用scope';指令中的变量是什么?,javascript,angularjs,scope,angularjs-directive,Javascript,Angularjs,Scope,Angularjs Directive,我想在指令中获取一个作用域变量作为javascript变量。 这是我的密码: app.controller("Home", ["$scope", function($scope) { ... $scope.nb_msg = data.length; ... }]); app.directive("myDiv", function() { // Here, i want to get $scope.nb_msg var nb_msg = ???;

我想在指令中获取一个作用域变量作为javascript变量。 这是我的密码:

app.controller("Home", ["$scope", function($scope) {
    ...
    $scope.nb_msg = data.length;
    ...
}]);

app.directive("myDiv", function() {
    // Here, i want to get $scope.nb_msg
    var nb_msg = ???;
    var result = [];
    // do something with nb_msg to get result
    var template = "";
    ...
    for(var i=0; i<10; i++) {
        template += "<span>" + result[i] + "</span>";
    }
    ...

    return {
        restrict: "E",
        template: template
    };
});
app.controller(“主页”、[“$scope”、函数($scope){
...
$scope.nb_msg=data.length;
...
}]);
应用程序指令(“myDiv”,函数(){
//在这里,我想得到$scope.nb_msg
变量nb_msg=???;
var结果=[];
//用nb_msg做一些事情以获得结果
var模板=”;
...

对于(var i=0;i如果您的指令没有创建隔离作用域,则变量将在指令控制器、编译和链接函数中可用

如果您的指令确实创建了一个隔离的作用域,那么您不能,而不是像这样,指令不知道outide控制器,因此它们无法访问控制器变量,您确实有其他选择

第一个--如果要提供双向绑定,请将控制器变量用作指令的属性值,并在范围中使用“=”链接它

第二——将要共享的变量放入服务中,并将其注入控制器和指令中

第三--(不太推荐)使用作用域。$parent要访问控制器作用域,此方法始终假定您的指令将始终包含在该控制器内


注意。在任何情况下,您都可以在指令定义功能中使用变量

您可以访问链接功能中的范围:

app.directive("myDiv", function() {    
    return {
        restrict: "E",
        template: '<span ng-repeat="i in result">{{i}}</span>',
        link: function(scope, element, attr) {

             // Here, i want to get $scope.nb_msg
             var nb_msg = scope.nb_msg;
             scope.result = [];
             for(var i=0; i<10; i++) {
                 scope.result.push(i);
             }


        }
    };
});
app.directive(“myDiv”,function(){
返回{
限制:“E”,
模板:{{i}},
链接:功能(范围、元素、属性){
//在这里,我想得到$scope.nb_msg
var nb_msg=scope.nb_msg;
scope.result=[];

对于(var i=0;iThanks,但是模板变量在link函数中?你认为我可以使用它来设置此指令的模板吗?或者我必须在link函数中返回它?抱歉,我在angularjs中是非常新的。模板通常是指令元素的子元素。Angular将自动编译和链接模板,并将其添加为yo的子元素ur指令元素。可以动态编译和链接HTML片段,但是如果你可以使用Angular的模板机制,你应该这样做。我知道了。非常感谢。我只有一个问题。我想在指令中添加css块,因为我以前无法定义它,它是基于变量nb_msg的:@keyframes myAnimat离子,百分比取决于nb_msg。例如:如果nb_msg=2,它必须是0%,50%,100%;nb_msg=3;0%30%50%70%100%。这就是为什么我需要在上面编写模板来帮助我添加css块。那么我可以在指令中创建这个css块吗?我该怎么做?非常感谢!!!