【发布时间】:2018-07-26 20:23:59
【问题描述】:
我在 AngularJS 中有一个自定义指令,我想从我的控制器向它传递一个变量。
控制器:
angular.
module('orderOverview').
component('orderOverview', {
templateUrl: 'home-page/order-overview/order-overview.template.html',
controller: ['Orders',
function ControllerFunction(Orders) {
var self = this;
// Order Info
Orders.getOverview().$promise.then(function(data) {
self.LineItems = data;
});
// Order Info
}
]
});
指令
angular.
module('myApp').
directive('gvInitializeOrderStatus', function() {
return {
scope: {
field: '@',
myData: '='
},
link: function(scope, element) {
console.log('field:', scope.field);
console.log('data:', scope.myData);
}
}
});
HTML
<div gv-initialize-order-status field="InquiryDone" myData="$ctrl.LineItems">
<span class="tooltiptext">Inquiry</span>
</div>
当我加载页面时,field 记录正常,但 data 未定义。
我已经尝试了很多方法,但如果它能让你知道我在想什么,这就是它应该在我脑海中发挥作用的方式。
在同一模板的另一点,我将 ng-repeat 数据传递给指令就好了,但在这种情况下,我特别不想 ng-repeat
ng-repeat 成功传递数据的 HTML
<li ng-repeat="lineItem in $ctrl.LineItems">
<div class="status-circle"
ng-click="toggleCircle($event, lineItem, 'InquiryDone')"
field="InquiryDone" item="lineItem" gv-initialize-statuses>
<span class="tooltiptext">Inquiry</span>
</div>
</li>
在我的另一个指令gv-initialize-statuses 中,我在我的scope 对象中使用了相同的概念,并且有类似scope: { 'field': '=' } 的东西,它工作得很好。
如何在不使用 ng-repeat 的情况下完成此操作?
【问题讨论】:
标签: javascript angularjs angularjs-directive