AngularJS ng-include on ng-click
AngularJS ng-include on ng-click
我想找到一种方法将HTML(针对控制器进行了优化)插入警报div。但是我找不到一种方法来做到这一点...
<script type="text/ng-include" id="login.html">
<form data-select="exeption" class="loginBox shadowed" onclick="event.stopPropagation();" novalidate name="login">
<h2>Login alert</h2>
<!--inputs and such, they need to be controlled by the controller-->
</form>
</script>
<script type="text/ng-include" id="bug.html">
<form data-select="exeption" class="bugBox shadowed" onclick="event.stopPropagation();" novalidate name="report">
<h2>Bug report</h2>
<!--inputs and such, they need to be controlled by the controller-->
</form>
</script>
这两个模板应该由 JS 本身或用户调用。这些模板应该进入这个div,但我不能使用innerHTML
因为模板中有一些ng模型之类的东西......
<div id="alert" data-ng-click="empty()" data-ng-controller="alert" role="navigation"></div>
通常我所做的是使用 ng-if/ng-show 。我不确定我是否正确理解了您的请求,所以我会写一个小例子;假设您有一个简单的登录表单:
<form>
<label>
username:
<input name="username" type="text" ng-model="username"/>
</label>
<label>
password:
<input name="password" type="password" ng-model="password"/>
</label>
<button type="submit" ng-click="login()">login</button>
<div class="message" ng-if="message">
</div>
</form>
控制器内部:
$scope.username = '';
$scope.password = '';
$scope.message = '';
$scope.login = function() {
// login example function with ajax request and success/error promises
myLogin($scope.username, $scope.password)
.success(function() {
$scope.message = 'Logged in!';
})
.error(function(errorMessage) {
$scope.message = errorMessage;
})
}
这样,当div 为空时,您的div $scope.message
为空,您只需给$scope.message
一个值即可自动显示它。如果你需要一个ng-include
,你可以做的最简单的事情就是在你需要的时候显示的div中使用它:
<div ng-if="showMessage">
<div ng-include="template.html"/>
</div>
更新:按照我的上一个例子,如果你想为每种情况包含不同类型的消息,你可以使用多个ngIf
,包括不同的模板;示例:
<div ng-if="showMessage">
<div ng-if="message.type == 'alert'" ng-include="'alert.html'"/>
<div ng-if="message.type == 'info'" ng-include="'info.html'"/>
<div ng-if="message.type == 'warning'" ng-include="'warning.html'"/>
<div ng-if="message.type == 'error'" ng-include="'error.html'"/>
</div>
这样,您还可以为登录表单或其他类型的弹出窗口执行ngInclude
。
更新2:与上一个示例相同,但使用另一种解决方案:
<div ng-if="showMessage">
<div ng-include="templatePath"/>
</div>
然后,您可以在控制器中提供指向部分的整个路径:
$scope.templatePath = 'alert.html';
相关文章:
- Angular,表达式{{}}的结果没有插入到ng-click中
- Ng隐藏在Ng-click元素之外
- 如何在ng-click中传递php对象
- AngularJs的ng-click$事件将子元素作为目标传递
- 使用jqGrid列格式化程序函数使ng-click工作
- 在Angularjs中,我如何使用ng repeat、ng model和ng click来动态更改内容
- ng-click指令没有调用整个函数
- 在控制器中添加$location依赖项时,ng-click停止激发
- 如何在ng repeat中使用ng click
- 将我的列表 vom ng-repeat 更改为收集重复 ng-click 后,无法正常工作
- 在 ng-click 中设置$scope变量指令
- 在 Angular 指令中定义一个用于 ng-click 的函数
- 为什么我们需要 ng-click
- (angularJS)使ng-click在ng-repeat上打开一个链接
- 为什么ng-click被称为按钮被点击的次数
- JQuery Click on Table
- AngularJS:如何防止ng-click以子元素为目标
- Ng-map on-click在移动设备上不起作用
- JS-angular为什么使用“ng click=”;f()"`属性,而不是`$(el).on('cl
- AngularJS ng-include on ng-click