Javascript ng中的指令包括
我正在构建一个简单的angularjs应用程序,并尝试在不刷新页面的情况下实现登录 我在做什么 在初始化时,ng include加载/set/save。/set/save获得了登录Facebook的Javascript ng中的指令包括,javascript,angularjs,templates,angularjs-directive,angularjs-ng-include,Javascript,Angularjs,Templates,Angularjs Directive,Angularjs Ng Include,我正在构建一个简单的angularjs应用程序,并尝试在不刷新页面的情况下实现登录 我在做什么 在初始化时,ng include加载/set/save。/set/save获得了登录Facebook的。因此,当单击该指令时,将打开一个窗口,当该窗口关闭时,它应更改ng include的src 问题 当在ng include内部使用该指令时(ng include src在init上有默认值),什么都不会发生(控制台中没有错误,只是什么都没有),但是当我将该指令放在ng include外部时,它工作正
。因此,当单击该指令时,将打开一个窗口,当该窗口关闭时,它应更改ng include的src
问题
当在ng include内部使用该指令时(ng include src在init上有默认值),什么都不会发生(控制台中没有错误,只是什么都没有),但是当我将该指令放在ng include外部时,它工作正常(请参阅下面的HTML代码)
HTML:
控制器:
App.controller("SetCtrl", ["$scope", "SetHolder",
function($scope, SetHolder) {
$scope.saveTemplate = '/set/save';
$scope.test = "loaded";
}
]);
和/设置/保存
You need to be logged in order to save the set.
<br />
<a fblogin>Login with Facebook</a>
您需要登录才能保存集合。
使用Facebook登录
这是一个正在工作的插件:
通过在作用域上使用原语值,您被咬到了。
- 当您将
fblogin
置于ngInclude
之外时,它位于控制器的相同范围内
ngInclude
始终创建一个新的子作用域,以便其中的任何指令都位于子作用域上
从…起
作用域继承通常是直接的,您甚至不需要知道它正在发生。。。直到您尝试将双向数据绑定(即表单元素、ng模型)从子范围内绑定到父范围上定义的基元(例如数字、字符串、布尔值)
它不像大多数人期望的那样工作。发生的情况是,子作用域获得自己的属性,该属性隐藏/隐藏同名的父属性。这不是AngularJS正在做的事情——这是JavaScript原型继承的工作方式
新的AngularJS开发人员通常没有意识到,ng repeat、ng switch、ng view和ng include都会创建新的子作用域,因此当涉及这些指令时,问题往往会出现
通过遵循always的“最佳实践”,原语的这个问题可以很容易地避免
您的情况是scope.saveTemplate='/set/continue'
只需在子作用域上创建一个变量,该变量会隐藏父作用域(控制器)的scope.saveTemplate
App.controller("SetCtrl", ["$scope", "SetHolder",
function($scope, SetHolder) {
$scope.saveTemplate = '/set/save';
$scope.test = "loaded";
}
]);
You need to be logged in order to save the set.
<br />
<a fblogin>Login with Facebook</a>