我可以't get$scope$申请在AngularJS工作
I can't get $scope.$apply to work in AngularJS
我似乎无法获得$scope$watch()在AngularJS中工作。我正在尝试"监视"服务中包含的变量。该变量由一个控制器设置,我想在另一个服务器中对该变量的更改采取行动。任何关于我做错了什么的建议都将不胜感激。这是我的代码:(注意:在Index.cshtml代码中,如果我从div中删除"data ng show"条件,那么div就会显示出来。所以我知道这个错误与data ng show="loggedIn"条件有关。)
//In services.js file:
function Session() {
this.loggedIn = false;
this.updateLogIn = function (value) {
this.loggedIn = value;
}
}
angular.module('app.services', []).service('session', [Session]);
angular.module('app.controllers', [])
.controller('HomeCtrl', ['$scope', 'session', function ($scope, session) {
$scope.loggedIn = session.loggedIn;
$scope.$watch(
function () {
session.loggedIn;
},
function (newVal, oldVal) {
if (newVal != undefined) {
$scope.loggedIn = newVal;
}
},
true
);
}])
.controller('LoginCtrl', ['$scope', 'session', function ($scope, session) {
$scope.loggedIn = session.loggedIn;
$scope.login = function () {
var s = "UserName=" + $scope.userName + "&Password=" + $scope.password;
$.ajax({
type: "POST",
url: "http://localhost:50227/api/Authentication",
data: s
})
.fail(function () {
session.updateLogIn(false);
})
.done(function (data) {
var tmp = JSON.parse(data);
// do stuff with sessionStorage...
session.updateLogIn(true);
})
.always(function () {
$scope.loggedIn = session.loggedIn;
$scope.$apply();
})
};
$scope.logout = function () {
session.updateLogIn(false);
$scope.loggedIn = false;
}
}])
//In Login.cshtml file:
<form id="frmLogin" class="form-inline search-box" data-ng-controller="LoginCtrl" ng-submit="login(userName, password)">
<div data-ng-hide="loggedIn">
<input id="UserName" ng-model="userName" type="text" placeholder="Username or Email" required autofocus />
<input id="Password" ng-model="password" type="password" placeholder="Password" required />
<button type="submit" ng-disabled="!(userName && password)" disabled>Sign In</button>
</div>
<div data-ng-show="loggedIn">
<a href="#" style="color:white;">Sign out</a>
</div>
//In Index.cshtml file:
<div data-ng-controller="HomeCtrl">
<div data-ng-show="loggedIn">
<p>This should show when the user is logged in</p>
</div>
第一眼看到$watch有问题,函数应该返回一个值!下次请提供一个plunker!
$scope.$watch(
function () {
return session.loggedIn;
},
相关文章:
- AngularJS UI路由器不能像ng路由器那样工作
- AngularJS ng开关或类似的动态值工作
- $timeout如何在angularJs中工作
- OnsenUI AngularJS数据绑定无法正常工作
- AngularJs中的自动完成功能无法正常工作
- AngularJS指令意外地协同工作
- AngularJS循环不工作
- AngularJS控制器不工作,为什么?(简单的控制器示例)
- 路由不'我不在AngularJS工作
- AngularJS代码不工作
- AngularJS绑定没有'在没有填充父范围的情况下无法工作
- AngularJS下拉菜单多选不工作
- angularjs模块不工作
- 为什么Angularjs验证don't与输入[type=“number”]一起工作
- 为什么AngularJS$作用域不能正常工作
- 为什么有序不在angularjs的ngrepeat工作
- order通过不使用带有破折号的对象名称的angularjs工作
- 我不能让AngularJS工作,我在这里错过了什么
- 我可以't get$scope$申请在AngularJS工作
- 是 angularjs 工作客户端