我已经定义我的角应用内以下指令:Angular指令“=”值绑定到范围,但未定义?
(function() {
'use strict';
angular
.module('almonds')
.directive('security', ['$animate', 'AuthFactory', directive]);
function directive($animate, AuthFactory) {
var directive = {
restrict: 'EA',
scope: {
operation: "@",
clearance: "@",
project: "="
},
link: linkFunc
};
return directive;
function linkFunc($scope, $element, $attr, ctrl, $transclude) {
var block, childScope, previousElements;
console.log($scope.project);
if($scope.project) {
var projectId = $scope.project.id;
}
var operation = $scope.operation;
var clearance = $scope.clearance;
if (projectId) {
var value = AuthFactory.hasProjectAccess(projectId, clearance);
console.log('PROJECT SECURITY:', projectId, clearance, value);
} else {
var value = AuthFactory.hasAccess(operation, clearance);
console.log('ORG SECURITY:', operation, clearance, value);
}
}
}
// Controller.$inject = ['$scope'];
//
// function Controller($scope) {
// var vm = this;
//
// activate();
//
// function activate() {
//
// }
// }
})();
应当用作接收一个operation
或project
值以及一个clearance
值,这将随后被用于是否所述的元件元素将呈现(我省略了那部分,但它的功能与ng-if
基本相同)。
下面是使用它的一个例子:
<span security project="vm.project" clearance="admin">
<a role="button" ng-click="vm.confirmDeletion();"><span class="melon-icon-md melon-icon-trash"></span></a>
</span>
发生了什么事虽然是,即使vm.project
确实定义,即console.log($scope.project);
产生undefined
。有趣的是,如果我只是console.log($scope);
它将包含一个project
财产与我需要的信息。我究竟做错了什么?
我其实只需要在项目的id
价值,所以我可以在指令中通过在整个project
对象并访问其id
,或以某种方式单独通过id
数。
'<角色= “按钮”'...什么是错的'
我使用'ui-sref',而不是在特定的链接上,但为了保持一致性,它们都是一样的。 – Tiago
请给我们提供plunker或jsfiddle来查看原因 –