Angularjs 变量的绑定不起作用
我创建了一个自定义指令,希望执行一个简单的变量绑定。当我直接设置数据时,所有内容都正确显示,但当我使用查询时,没有设置任何数据,但我的控制台输出显示变量已分配 这是我的指示:Angularjs 变量的绑定不起作用,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我创建了一个自定义指令,希望执行一个简单的变量绑定。当我直接设置数据时,所有内容都正确显示,但当我使用查询时,没有设置任何数据,但我的控制台输出显示变量已分配 这是我的指示: function tutorialCourse(){ return{ restrict: 'E', templateUrl: 'app/tutorial/tutorialCourse.html', controller: 'TutorialCourseController', control
function tutorialCourse(){
return{
restrict: 'E',
templateUrl: 'app/tutorial/tutorialCourse.html',
controller: 'TutorialCourseController',
controllerAs: 'tutorial'
};
};
这是我的控制器:
TutorialCourseController.$inject = ['$q', 'Course'];
function TutorialCourseController($q, Course){
this.course = {};
loadTutorial();
function loadTutorial(){
Course.query().$promise.then(function(courses){
this.course = _.first(courses);
console.log(this.course)
});
};
}
我的html非常简单:
<div class="panel panel-primary">
<div class="panel-heading">
<h4 class="panel-title">{{tutorial.course.title}} </h4>
</div>
</div>
一切正常。你知道我不理解或做错了什么吗 问题在于
此。在查询回调函数内部使用的课程
不是函数外部的此
(上下文)。因为每个javascript函数在实例化/执行时都有自己的上下文
您可以通过将控制器上下文存储在var self=this代码>,并在指向TutorialCourseController
上下文时使用self
。通过词法作用域,Javascript将解析self
变量的值
TutorialCourseController.$inject = ['$q', 'Course'];
function TutorialCourseController($q, Course){
var self = this;
self.course = {};
loadTutorial();
function loadTutorial(){
Course.query().$promise.then(function(courses){
self.course = _.first(courses);
console.log(this.course);
});
};
}
参考问题在于此。在查询回调函数内部使用的课程不是函数外部的此(上下文)。因为每个javascript函数在实例化/执行时都有自己的上下文
您可以通过将控制器上下文存储在var self=this代码>,并在指向TutorialCourseController
上下文时使用self
。通过词法作用域,Javascript将解析self
变量的值
TutorialCourseController.$inject = ['$q', 'Course'];
function TutorialCourseController($q, Course){
var self = this;
self.course = {};
loadTutorial();
function loadTutorial(){
Course.query().$promise.then(function(courses){
self.course = _.first(courses);
console.log(this.course);
});
};
}
参考Nice,但是为什么不返回结果呢?像这样。course=loadTutorial();在loadTutorial中:return u.first(courses)@x3lq,只有当您从loadTutorial
函数返回一个承诺时,它才会起作用。当query
函数解析时,不要忘记解析它。但是它将是一个Promise对象,因为ngresourcerece
为您打开响应对象。很好,但是为什么不返回结果呢?像这样。course=loadTutorial();在loadTutorial中:return u.first(courses)@x3lq,只有当您从loadTutorial
函数返回一个承诺时,它才会起作用。当query
函数解析时,不要忘记解析它。但它将是一个承诺对象,因为ngresourcerece
为您打开响应对象。