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'
}