Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Angularjs 将变量赋值给指令内的$scope_Angularjs - Fatal编程技术网

Angularjs 将变量赋值给指令内的$scope

Angularjs 将变量赋值给指令内的$scope,angularjs,Angularjs,我有一个指示: <users-table user="{{ session.user }}"></users-table> angular.module('app') .directive('users-table', function($scope) { return { restrict: "E", scope: { currentUser: "=user" }, tem

我有一个指示:

<users-table user="{{ session.user }}"></users-table>
angular.module('app')
.directive('users-table', function($scope) {
    return {
        restrict: "E",
        scope: {
            currentUser: "=user"
        },
        templateUrl: '/js/directives/templates/users-table.html',
        link: function($scope, $element, $attrs) {
            console.log(currentUser);
            $scope.user = currentUser;
        } // link
    }; // return
}]);
在这个阶段,我只想通过在模板中输出$scope.user对象来确认它连接正确:

/js/directives/templates/users-table.html:

{{ user }}
但这不会返回任何内容。在这个简单指令中,我做错了什么

我已经完成了调试步骤:

已检查文件是否正确加载。 已检查session.user的输出这在指令元素之前是正确的。
编辑:由于当前用户未登录到控制台,因此链接函数似乎没有被调用。

正确的分配是:

<users-table user="session.user"></users-table>
最后,该指令应声明为:

.directive('usersTable'
这是因为指令希望在声明中使用驼峰大小写值,在html中使用破折号分隔的属性

下面是一个正在工作的JSFIDLE:

您尚未在链接函数的任何位置定义currentUser。因此,它作为一个未定义和未声明的变量存在

如您所做的那样创建隔离作用域将在链接函数中预先填充作用域,以连接或复制父作用域中的任何内容。所以你真的需要做:

    link: function($scope, $element, $attrs, User) {
        console.log($scope.currentUser);
        $scope.user = $scope.currentUser;
    }
隔离范围

scope: {
   currentUser: '=user'
}

将链接函数中的scope.currentUser设置为父函数中的scope.user。

我认为可能是这样,所以我尝试了,但结果仍然相同-即没有输出。谢谢,您对命名的编辑是主要问题-谢谢排序。谢谢。我已经改正了,但仍然有同样的问题。我认为我的指令可能没有正确地连接到应用程序上。放入一个JSFIDLE并共享它,很高兴看到。我有一个基本的JSFIDLE,其中加载了所有的angular,因此您可以在
scope: {
   currentUser: '=user'
}