有没有办法检查AngularJS
工厂创建的对象的实例?
angular.module('so')
.factory('UserFac', function () {
return function (first, last) {
return {
name : first + ' ' + last
};
}
})
.controller('UserCtrl', function (User) {
var user = new UserFac('John', 'Doe');
function isUser(userObj) {
// your answer here...
}
if (isUser(user)) {
// does not matter
}
});
不幸的是,我发现无法通过常用的JavaScript方式检查工厂对象的实例,如:
user instanceof UserFac
或
typeof user === 'UserFac'
或
user.constructor === UserFac
或
user.prototype === UserFac
看起来工厂/服务的内部AngularJS
代码隐藏了原型/构造函数属性。
Websearch非常痛苦,因为(大部分)所有结果都涉及服务和工厂之间的差异。
感谢您的帮助!
答案 0 :(得分:3)
一个问题是你的构造函数是匿名的,另一个问题是你要返回一个对象文字(,它不是你的构造函数的实例,而是一个Object构造函数的实例)你的构造函数。
如果你这样做, [passWordTextField resignFirstResponder];
passWordTextField.secureTextEntry = !passWordTextField.secureTextEntry;
[passWordTextField becomeFirstResponder];
将正常工作,如下所示:
$.ajax({
url:'http://www.yoursitelink.com/',
type:'GET',
success: function(data){
var html = data;
$("#img").attr('src');
}
});
答案 1 :(得分:0)
同意@ T.J 。或者,您也可以按照以下方式实施。
您可以阅读他们的documentation实际上Angular如何实例化命名提供程序。这是Angular社区自己定义的最佳实践。
<强>代码:强>
angular.module('so', []);
angular.module('so')
.factory('UserFac', function UserFac() {
return function (first, last) {
this.name = first + ' ' + last
}
})
.controller('UserCtrl', function(UserFac) {
var user = new UserFac('John', 'Doe');
console.log(user instanceof UserFac)
console.log("Name:"+user.name);
});