【发布时间】:2014-07-08 14:37:02
【问题描述】:
如何将对象从指令发送回父控制器?
我定义了以下指令:
app.directive('inspectorSharedObjects', function () {
return {
restrict: 'E',
scope: {
filterText: '=filter',
type: '=',
selectObject: '&onSelect'
},
controller: function ($scope) {
$scope.dot = function (tags) {
return "label-dot-" + tags[0];
}
},
link: function (scope, element, attrs) {
},
templateUrl: 'partials/InspectorSharedObjectListPartial.html'
};
});
...我这样称呼它:
<inspector-shared-objects ng-repeat="group in modelSharedObjects" type="group" filter="filterText" on-select="selectObject(obj)"></inspector-shared-objects>
... 使用以下模板:
<div class="object-group-header" ng-click="isActive = !isActive" ng-class="{active : isActive}">
<span>{{ type.name }}</span>
<span ng-if="filterText">({{ filteredList.length }})</span>
<i class="fa fa-plus-circle"></i>
</div>
<div class="object-group-list" ng-show="isActive">
<ul>
<li ng-repeat="obj in filteredList = (type.contents | filter:filterText | orderBy:'name')" ng-class="dot(obj.tags)" ng-click="selectObject(obj)">{{ obj.name }}</li>
</ul>
</div>
列表中li 上的ng-click 应将选定的obj 发送回父控制器。上面的代码调用了父控制器的函数,但我试图传递的对象是undefined。
我通读了以下问题:calling method of parent controller from a directive in AngularJS - 我认为它正在尝试做同样的事情,但我看不出我在做什么与答案(或我对它的解释)不同。
如何将来自指令模板的obj 传递回父控制器?
更新:这是一个 JSFiddle:http://jsfiddle.net/EvilClosetMonkey/7GMEG/
当您单击项目符号值时,控制台应该吐出对象。
【问题讨论】:
-
@Mosho,添加了小提琴。
标签: javascript angularjs angularjs-directive angularjs-scope angularjs-controller