Кажется, что когда я присваиваю новое значение переменной в моей службе/фабрике, это прерывает привязку, и контроллер перестает обновлять значение, ЕСЛИ Я не вызываю функцию $scope.verify
в моем контроллере, которая просто выводит объект службы на консоль, затем привязка обновляется один раз. Я неправильно присваиваю значение на фабрике skypeClient
?
property.changed(function (_status) {
state = _status;
console.log("New State" + state);
});
Бывший. Я выполняю $scope.signIn()
и привязка обновляется до signingIn
, но когда значение изменяется на SignedIn
(проверено с помощью консоли), контроллер не обновляется до SignedIn
, если только я не выполняю $scope.verify()
для каждого изменения в skypeClient.state
с этого момента.
См. код ниже:
Контроллер
controller('loginCntrl', function ($scope,skypeClient) {
$scope.skypeClient = skypeClient;
$scope.signIn = function () {$scope.skypeClient.signIn($scope.user, $scope.password)}
$scope.signOut = function(){$scope.skypeClient.signOut()}
$scope.verify = function () {
console.log(skypeClient);
console.log($scope.skypeClient);
}
});
Сервис
.factory('skypeClient', function () {
//Service Properties
var client = new Skype.Web.Model.Application;
var state = 'SignedOut';
var property = property = client.signInManager.state;
//Initialize Listeners
var init = function () {
client.signInManager.state.when('SignedIn', function () {
console.log('Signin:' + state); // This outputs the correct value
});
property.changed(function (_status) {
state = _status; //<--WHERE VALUE IS UPDATED
console.log("New State" + state);
});
}
//Signin Function
var signIn = function (username, password) {
client.signInManager.signIn({
username: username,
password: password
}).then(function () {console.log('LoggedIn');});
}
var signOut = function () {
client.signInManager.signOut()
.then(function () {
this.isSignedIn = false;
}, function (error) {
this.erros.push(error);
this.errorCount++;
});
}
init();
return {
signIn: signIn,
signOut, signOut,
state: function(){return state}
}
});
HTML
(Current Signin State: {{skypeClient.state()}} )