我正在尝试基于 JSON 文件实现主从 View 。 PHP 运行良好。它带来了应有的数据。 Config.js 或controller.js 工作正常。但是,我收到如下所示的错误。 SET 属性未定义。
我是初学者。我认为输入“this.___”将设置该属性。可是,我好像失踪了。如果不是,可能出什么问题了? 我从下面的链接中获取了引用。
谁能告诉我出了什么问题吗?也许,如何设置属性?
(function () {
'use strict';
var app = angular.module('myProject', []);
app.service('ProjectService', function($http) {
$http.get("projects_read.php", {})
.then(function(response){
var pjts = response.data;
this.getProjects = function() { //ERROR occurs
return pjts;
};
this.getProject = function(id) {
for (var i = 0; i < pjts.length; i++) {
if (pjts[i].id === id) {
return pjts[i];
}
}
return null;
}
console.log(pjts);
});
})
})();
[错误] 无法设置未定义的属性“getProjects”。
[引用链接] http://plnkr.co/edit/VJxlqguJZGrIutAFLCNc?p=preview
预先感谢您的帮助!
最佳答案
您在错误的上下文 (this
) 上设置属性 getProjects
回调function(response){}
创建一个新的上下文(在严格模式下未定义,这就是为什么你会得到:Cannot set property 'getProjects' of undefined)尝试在外部保存服务的引用 promise 并使用该上下文。
app.service('ProjectService', function($http) {
var _this = this; //save context of the service
$http.get("projects_read.php", {})
.then(function(response){
var pjts = response.data;
_this.getProjects = function() {
return pjts;
};
this.getProject = function(id) {
for (var i = 0; i < pjts.length; i++) {
if (pjts[i].id === id) {
return pjts[i];
}
}
return null;
}
console.log(pjts);
});
})
关于javascript - 使用主从 View 的 'this.' 表达式设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46954338/