【发布时间】:2016-01-30 16:12:06
【问题描述】:
我使用pageslide directive 是为了在单击图标时显示横向滑动菜单。
这是通常的做法,它的工作原理:
<div class="navbar-header">
<span ng-controller="slideController as s">
<a class="navbar-brand" href="javascript:void(0)"
ng-click="s.toggle()"><i class="fa fa-bars fa-lg"></i></a>
<div pageslide ps-open="s.isActive" ps-side="left">
<div style="padding:20px">
<h2>Hello Pageslide</h2>
<p>Put here whatever I want in the lateral menu</p>
<a ng-click="s.toggle()" class="button" >Close</a>
</div>
</div>
</span>
<a class="navbar-brand text-danger" href="javascript:void(0)">Balrog</a>
</div>
但我想在外部模板中制作菜单内容,所以我正在尝试这个:
<div class="navbar-header">
<span ng-controller="slideController as s">
<a class="navbar-brand" href="javascript:void(0)"
ng-click="s.toggle()"><i class="fa fa-bars fa-lg"></i></a>
<menu-item isActive="s.isActive"></menu-item>
</span>
<a class="navbar-brand text-danger" href="javascript:void(0)">Balrog</a>
</div>
用这个作为 menu.html :
<div pageslide ps-open="s.isActive" ps-side="left">
<div style="padding:20px">
<h2>Hello Pageslide</h2>
<p>Put here whatever I want in the lateral menu</p>
<a ng-click="s.toggle()" class="button" >Close</a>
</div>
</div>
另外,这里是相关的控制器:
'use strict';
angular.module('BalrogApp').controller('slideController', function(){
this.isActive= false; // This will be binded using the ps-open attribute
this.toggle = function(){
this.isActive= !this.isActive
}
});
和<menu-item> 指令:
angular.module('BalrogApp').directive('menuItem', function () {
return {
restrict: 'E',
templateUrl: "views/menu.html",
scope: {
isActive: '='
},
controller: 'slideController',
controllerAs: 's',
bindToController: true
}
});
所以它不是这样工作的,也许是因为主视图(包括<menu-item>)本身包含在主页中,这要归功于<ng-view> ?
或者pageslide-directive 可能需要<div pageslide ...> 及其父元素位于同一个文件中?
我可以从控制台得知 toggle() 在这两种情况下都被调用并更改了 isActive 但它没有打开带有指令版本的菜单。
此外,将ng-controller="slideController as s" 添加到具有pageslide 属性的根<div> 并没有改变任何东西。
那么我怎样才能使这个工作与另一个文件中的菜单一起工作呢?
【问题讨论】:
-
我个人讨厌 ng-include...我更喜欢创建指令...将 ng-include 更改为指令,因为您正在尝试操作 DOM ....如果您需要更多帮助请添加一个plunker
-
你用的是什么角度版本?
-
@JesúsQuintana:我正在使用 AngularJS v1.4.7
标签: javascript html angularjs model-view-controller angularjs-directive