嵌套指令未显示.AngularJS.
Nested Directives not showing. AngularJS
我正在创建一个菜单,根据视图,它将显示正确的链接。因此,从下面的代码中,当父范围startCtrl
,$scope.viewActions
值更改时,它将用于选择正确的菜单模板,该模板将显示在菜单侧边栏上。
我遇到的问题是我的嵌套指令模板没有显示在mobile-side-bar
指令上。此外,我得到一个:
错误:[$parse:语法] 语法错误:表达式 [{{playerSearchSpinnerOn}}] 第 2 列处的标记"{"键无效,从 [{playerSearchSpinnerOn}}] 开始
当尝试绑定此 scope.playerSearchSpinnerOn,这是一个子范围,用于"startCtrl"到我的
<advertise-game playersearchspinneron={{playerSearchSpinnerOn}}></advertise-game>
范围层次结构:
StartCtrl(根控制器)
(移动侧栏指令) (指令 - 独立范围)
AddUsersController(controller) (通过 ng-view 显示视图
然后是移动侧栏指令的嵌套指令
法典
启动控制
monopolyMenuModule.controller('StartCtrl', ['$scope', 'startMenuServices','startMenuHeaderBar', function ($scope, services,startMenuHeaderBar,viewNamesEnum) {
$scope.viewActions = "";
}]);
添加用户Ctrl
monopolyMenuModule.controller('AddUsersCtrl', ['$scope', 'addUserServices', 'GameGroupDetails', 'viewNamesEnum', function ($scope, service, GameGroupDetails, viewNamesEnum) {
// add code to call notifyUsers object.. watch pluralsight "connecting our server to client" and "how signalr works"
$scope.playerSearchSpinnerOn = false;
$scope.$parent.viewActions = "addUsers.html";
}]);
移动边栏指令
monopolyMenuModule.directive('mobileSideBar', function () {
return {
restrict: "E",
transclude: true,
scope: {
},
controller: function ($scope, menuService) {
// code here
},
templateUrl: '/Js/MonopolyMenu/mobileSideBar.html'
}
});
广告游戏指令
monopolyMenuModule.directive('advertiseGame', ['GameGroupDetails', function (GameGroupDetails) {
return {
restrict: "E",
scope: {
playerSearchSpinnerOn: "=",
},
template: "<div ng-click='advertiseGame()>Advertise Game</div>",
controller: function ($scope) {
$scope.advertiseGame = function () {
if (GameGroupDetails != null) {
service.FindUsers(GameGroupDetails).done(function () {
// add spinner once group has been show in invite screen
// apply is needed and apply is only called in angularjs directives
$scope.$apply(function () {
$scope.playersearchspinneron = true;
});
});
}
};
}
}
}]);
目录
<div id="mainContainer" ng-controller="StartCtrl">
<div id="menuContainer">
<mobile-side-bar id="menu" class="hideElement">
<div ng-include src="viewActions"></div>
</mobile-side-bar>
</div>
// AddUsers.html comes from $routeProvider and binding addUsersCtrl
<div ng-view class="view-animate"></div>
</div>
<script type="text/ng-template" id="addUsers.html">
<advertise-game player-search-spinner-on="playerSearchSpinnerOn"> </advertise-game>
<invite-friend></invite-friend>
<player-search></player-search>
</script>
如何让广告游戏和我的其他嵌套指令在mobile-side-bar
指令中显示其模板?
若要将值从父控制器传递到带有"="的嵌套指令,请不要使用插值。请参阅此问题的答案。
另外,请注意骆驼和连字符大小写之间的切换。通常js中的变量使用驼峰,而html属性使用连字符。
我建议将指令调用更改为:
<advertise-game player-search-spinner-on="playerSearchSpinnerOn"></advertise-game>
并且指令定义应该在scope
参数中具有驼峰大小写。
scope: {
playerSearchSpinnerOn: '='
}
相关文章:
- Angularjs显示给定ISO格式的日期
- 如何使用AngularJS显示按钮或锚标记值
- 如何使用 Angularjs 显示面包屑
- angularjs显示没有'不起作用
- 从维基百科检索数据并使用angularjs显示
- AngularJS-显示过滤数据的长度
- AngularJS - 显示/隐藏加载器
- Angularjs:显示字符串中的最后四个字符,并将其余字符替换为“X”
- Angularjs 显示来自 json 的日期格式
- AngularJS - 显示/隐藏根范围内的元素
- 使用 angularJs 显示来自套接字 io 的数据
- 使用 Angularjs 显示授权内容
- 如果文本格式化为 html,则使用 angularjs 显示更少/更多的文本
- angularjs显示ng重复列表中的最后5项
- AngularJS显示复杂对象
- 如何使用Wikimedia API和AngularJS显示维基百科页面的缩略图
- Angularjs显示图像斑点
- AngularJS显示JSON数据
- angularJS显示空白页面没有错误-控制器问题
- 为什么angularjs显示标记,而不是谷歌地图中的路线