使用模态作为模板视图并引用它
Use Modal as a template view and reference to it
我有模态代码(下面)包装在导航中.html它按预期工作(登录、注销...作品)。
<div class="modal fade" id="authModal" role="dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-body">
<form class="form-signin" role="form">
<input ng-model="user.email" type="email" class="form-control" placeholder="Email address" required="" autofocus="">
<input ng-model="user.password" type="password" class="form-control" placeholder="Password" required="">
<div class="checkbox checkbox-success">
<input ng-model="checkbox.signup" ng-init="checkbox.signup=false" type="checkbox">
<label> Sign Up for first-timer </label>
</div>
<div class="text-center">
<button ng-click="login($event)" class="btn btn-lg btn-primary" type="button">Sign In</button>
</div>
</form>
</div>
</div>
但是当我将所有模态内容移动到名为 md.html 的文件并将其包含在导航中时.html通过
<div class="navbar-header" ng-controller="MainCtrl">
<div ng-include="'views/modals/md.html'"></div>
</div>
我绝对将其包含在 ng 控制器div 中。
在测试中,我收到无法引用控制器的用户密码的错误。控制器以前工作正常,我没有对其进行任何更改。对于这个问题,我发布了模态和控制器代码的简化版本。
$scope.login = function($event){ $event.preventDefault();
// console.log("cond ", cond, ".checkbox.signup ", $scope.checkbox.signup);
if (!$scope.logged)
fn.login($scope.user, function(){
if ($scope.checkbox.signup) fn.signup($scope.user);
});
};
var fn = {
login: function(user, cb){
if (Auth.authData) return;
if (!user.password) {
fn.alert("please type password");
return;
}
if (fn.valid_email(user.email))
Auth.ref_ds1.authWithPassword(user, function(error, authData) {
if (error) {
fn.alert(error);
cb();
} else {
authData.email = $scope.user.email;
console.log("Authenticated successfully on:", authData.email);
fn.greet("Hello " + authData.email.split("@")[0]);
$scope.logged = true;
window.location.href = "/";
}
});
}
}
如何正确引用它们?
看起来您可能会在创建另一个作用域时看到ng-include
出现问题,并且无法引用以前定义的用户对象。
避免与作用域混淆的一种方法是使用"控制器作为"语法专门引用作用域(请参阅 http://www.johnpapa.net/angularjss-controller-as-and-the-vm-variable/)。 这里有一个小例子:
// in the controller
app.controller('MainController', function() {
var vm = this;
this.somevalue = 'something';
})
// markup
<div ng-controller="MainCtrl as ctrl">
{{ ctrl.somevalue }}
<div ng-controller="SecondCtrl as secondCtrl">
{{ ctrl.somevalue }}
{{ secondCtrl.anothervalue }}
</div>
</div>
使用"控制器作为"确实有助于解决您遇到的范围问题,但需要对原始控制器进行一些重新加工。
相关文章:
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- 全局引用b/t模板和视图
- 如果视图中没有Jquery脚本引用,Unobtrusive Javascript Validation是不起作用的
- 如何在另一个视图中获取元素的引用id-UI5
- 从事件回调中引用包含主干视图
- 在挖空中引用对象构造函数外部视图模型的属性
- 如何在Sencha Architect中将控制器引用到视图
- 主干:丢失对实际视图的引用
- 对 ejs 视图文件的引用在构建后不会更改,尽管它在生产中结合了它.js - Javascript MVC
- 使用模态作为模板视图并引用它
- 木偶.js - 项目视图获取父区域引用
- E/Web 控制台 (8272): 未捕获的引用错误: 在视图寻呼机中加载 Web 视图时未定义函数名称:1
- 为什么在剃刀视图页面中引用JSON编码
- 如何扩展/获取对规则视图就地编辑器的引用
- 主干视图未捕获引用错误
- ExtJS控制器引用视图获胜'不要使用不同的别名
- AngularJS,通过引用更新子控制器视图中的ng repeat
- 以编程方式添加视图,然后引用这些视图
- 使用Aurelia's ref属性引用元素的视图模型
- 当引用对象改变时,react .js视图不更新