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
为您打开响应对象。