我正在构建一个简单的angularjs应用,并且试图实现无需页面刷新的登录。
我在做什么
初始化时,ng-include会加载/ set / save。/ set / save <a fblogin>Login with Facebook</a>
中有。因此,当单击指令时,将打开一个窗口,并且当关闭窗口时,应更改ng-include的src。
问题
当指令在ng-include内部使用时(ng-include
src在init上具有默认值)时,什么都不会发生(控制台中没有错误,只有空),但是当我将指令放在ng-
include之外时,它可以正常工作(请参见下面的HTML代码)
HTML:
<div id="set-creator" ng-controller="SetCtrl">
........
<div id="saveModal" class="reveal-modal" data-reveal>
<a href fblogin>testCase</a>
// ^this is working
//but if the directive is inside ng-include, it's not working
<ng-include src="saveTemplate"></ng-include>
<a class="close-reveal-modal">×</a>
</div>
</div>
指示:
App.directive('fblogin', function() {
return {
transclude: false,
link: function(scope, element, attrs) {
element.click(function() {
var win = window.open("/auth/facebook", 'popUpWindow', 'centerscreen=true');
var intervalID = setInterval(function() {
if (win.closed) {
scope.saveTemplate = '/set/continue';
scope.$apply();
clearInterval(intervalID);
}
}, 100);
});
}
};
});
控制器:
App.controller("SetCtrl", ["$scope", "SetHolder",
function($scope, SetHolder) {
$scope.saveTemplate = '/set/save';
$scope.test = "loaded";
}
]);
和/ set / save
You need to be logged in order to save the set.
<br />
<a fblogin>Login with Facebook</a>
这是一个工作正常的插件:http
://plnkr.co/edit/ilVbkHVTQWBHAs5249BT?p=preview
fblogin
外面ngInclude
这是在控制器的相同的范围。ngInclude
总是创建一个新的子范围,因此它里面的任何指令都是on a child scope
。Scopes)
范围继承通常是简单明了的,并且您通常甚至不需要知道它的发生……直到您尝试将2-way数据绑定(例如,表单元素,ng-
model)绑定到基元(例如,数字,字符串,布尔值)从子作用域内部在父作用域上定义。它不能像大多数人期望的那样工作。发生的情况是 子作用域获得了自己的属性,该属性隐藏/阴影了同名的父属性 。AngularJS并没有这样做-
这就是JavaScript原型继承的工作方式。新的AngularJS开发人员通常不会意识到 ng-repeat,ng-switch,ng-view和ng-include都会创建新的子范围
,因此当涉及这些指令时,常常会出现问题。通过遵循始终具有“’
”的“最佳实践”,可以很容易地避免使用基元出现此问题。在您的ng-
models中。
您遇到的情况是,scope.saveTemplate = '/set/continue';
仅在子作用域上创建一个变量,该变量将成scope.saveTemplate
为父作用域(控制器)的影子。
问题内容: 我想在内容更改时创建具有自定义行为的列表。我尝试为此创建一个指令,但是我对如何将ng-transclude与ng- repeat指令结合起来感到迷茫。有人可以让我走上正轨吗? HTML: Javascript: 我已经在这里工作了一部分 编辑: 条件: 该项目的模板必须在视图中定义,而不是在指令中定义,并且必须有权访问子作用域中的项目属性。理想情况下,我想像在ng-repeat指令中那
在JSP规范2.1中,我找到了一个关于JSP include指令和JSP include标记的示例: 对于更复杂的包含集示例,请考虑以下四种使用四个JSP文件构建的情况:a.JSP、C.JSP、dir/B.JSP和dir/C.JSP: 我不太理解这一点,尤其是第一种和最后一种情况,为什么在第一种情况下C.jsp不能解析为C.jsp?为什么c.jsp在最后一种情况下没有解析为dir/c.jsp?
本文向大家介绍AngularJS基础 ng-include 指令简单示例,包括了AngularJS基础 ng-include 指令简单示例的使用技巧和注意事项,需要的朋友参考一下 AngularJS ng-include 指令 AngularJS 实例 包含 HTML 文件: 运行结果: myFile.htm 文件标题 这个文本来自被包含的文件 myFile.htm! 定义和用法 ng-inclu
本文向大家介绍AngularJS基础 ng-include 指令示例讲解,包括了AngularJS基础 ng-include 指令示例讲解的使用技巧和注意事项,需要的朋友参考一下 AngularJS ng-include 指令 AngularJS 实例 包含 HTML 文件: 运行结果: myFile.htm 文件标题 这个文本来自被包含
问题内容: 是否可以使ng-include指令与CDN一起使用? 在这种情况下: somewebsite.com的cdn子域通过DNS / CName映射到内容传递网络。 但是,在加载主网站somewebsite.com时,它不会呈现模板。我想在内部将其视为跨域调用。 是否有任何变通方法可以将Angular模板托管在第三方CDN上并与本地域一起使用? 问题答案: 是的,您是对的-问题出在跨域调用。
问题内容: 如何在angularJS中有条件地执行ng-include? 例如,如果变量设置为,我只想包含一些内容。 问题答案: 如果您使用的是Angular v1.1.5或更高版本,则还可以使用ng- if : 如果您有任何旧版本: 使用ng-switch: 小提琴