У меня есть требование получить значение области действия настраиваемой директивы. Я пытаюсь получить доступ к внутренней функции scope.cellId. это не работает. Не могли бы вы дать решение для этого.
Заранее спасибо..
Вот ссылка на скрипку:
Вот какой контроллер:
var bosAppModule = angular.module('testapp', []);
bosAppModule.controller('testCtrlr',['$scope', function($scope){
$scope.layoutData =[ {layouttablecelltableid:"dsafdasfasdf"},{layouttablecelltableid:"aaaaaa"}]
}]);
bosAppModule.directive('layoutTableCellView',function($compile){
var layoutTableCellObj={};
linkFnTableCell=function(scope, element, attributes, controllerCtrl) {
console.log("#####"+scope.cellId);
};
layoutTableCellObj.restrict='AE';
layoutTableCellObj.replace='true';
layoutTableCellObj.scope={layoutData:'=',cellId:'@'};
layoutTableCellObj.template="<div cell-id='tablecell.layouttablecelltableid' style='background-color:grey;height:200px;' layout-data='layoutData' ng-repeat='tablecell in layoutData' >{{tablecell.layouttablecelltableid}}</div>";
layoutTableCellObj.link = linkFnTableCell;
return layoutTableCellObj;
});
Вот HTML:
<div ng-app="testapp">
<div ng-controller="testCtrlr">
<layout-table-cell-view> </layout-table-cell-view>
</div>
</div>
2 ответа
Я не уверен, что понимаю, чего вы там пытаетесь достичь. Вы можете дать более подробную информацию ? Я почистил вашу скрипку, потому что это было немного беспорядочно, и angular не загружался для меня:
https://jsfiddle.net/6xLt4pja/1/
Директива:
bosAppModule.directive('layoutTableCellView', [
function () {
return {
restrict: 'AE',
template: "<div style='background-color:grey;height:200px;' ng-repeat='tablecell in layoutData'>{{tablecell.layouttablecelltableid}}</div>",
scope: {
layoutData:'='
},
link: function (scope) {
console.log('SCOPE: ', scope.layoutData);
}
};
}
]);
И html:
<div ng-app="testapp">
<div ng-controller="testCtrlr">
<layout-table-cell-view layout-data="layoutData"></layout-table-cell-view>
</div>
</div>
Не совсем уверен, что вам нужно, но если вы хотите получить доступ к значениям области, которые вы уже объявили, вы можете получить к ним доступ в своей функции следующим образом:
linkFnTableCell = function(scope, element, attributes, controllerCtrl) {
console.log("#####" + scope.cellId); // your own log
for(var i = 0; i < scope.layoutData.length; i++){
console.log("#####" + scope.layoutData[i].layouttablecelltableid);
}
};
Это даст вам все внутренние идентификаторы - если вы хотите также cellId, синтаксис станет более сложным.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.