Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么可以';t获取存储在控制器变量中的值_Angularjs_Model View Controller - Fatal编程技术网

Angularjs 为什么可以';t获取存储在控制器变量中的值

Angularjs 为什么可以';t获取存储在控制器变量中的值,angularjs,model-view-controller,Angularjs,Model View Controller,这是我的控制器: (function(){ 'use strict'; angular .module('app') .controller('HomeController', ['Factory', HomeController]); function HomeController(Factory){ var result = Factory.query(); t

这是我的控制器:

(function(){
  'use strict';

  angular
    .module('app')
    .controller('HomeController', ['Factory',
                                  HomeController]);

    function HomeController(Factory){

      var result = Factory.query();

      this.model = result[0];

    }
})();
在视图中,我通过这样做获得值

div(ng-controller='HomeController as HomeCtrl')
  h3{{HomeCtrl.model}}
问题是我没有得到任何价值。我完全确定该值是从工厂返回的,因为我已经测试了factory.query()并得到了结果。事实上,如果我按照以下方式执行操作,并通过执行HomeCtrl.result[0]在视图中获取值,我就会得到结果

(function(){
  'use strict';

  angular
    .module('app')
    .controller('HomeController', ['Factory',
                                  HomeController]);

    function HomeController(Factory){

      this.result = Factory.query();

    }
})();

您应该使用$scope将数据传递给视图。这样,Angular将绑定数据,并在范围变量更改时自动更新视图(由于异步调用,视图呈现时模型变量可能不可用)。试着这样做:

控制器

$scope.model = result[0];
看法


您应该使用$scope将数据传递给视图。这样,Angular将绑定数据,并在范围变量更改时自动更新视图(由于异步调用,视图呈现时模型变量可能不可用)。试着这样做:

控制器

$scope.model = result[0];
看法


您应该使用$scope将数据传递给视图。这样,Angular将绑定数据,并在范围变量更改时自动更新视图(由于异步调用,视图呈现时模型变量可能不可用)。试着这样做:

控制器

$scope.model = result[0];
看法


您应该使用$scope将数据传递给视图。这样,Angular将绑定数据,并在范围变量更改时自动更新视图(由于异步调用,视图呈现时模型变量可能不可用)。试着这样做:

控制器

$scope.model = result[0];
看法


工厂的查询方法无疑是一种异步方法,它会立即返回一个空数组,但只有在异步查询的结果可用时(例如,当它从AJAX请求获得响应时)才会填充它:

因此,由于您的控制器不等待查询结果,因此它将当前未定义的
结果[0]
分配给其
模型
变量


第二种方法是有效的,因为在这种情况下,一旦收到对异步请求的响应,视图就会重新呈现自己,因此它会重新评估
结果[0]
,其中包含从AJAX请求接收的元素。

,工厂的查询方法无疑是一种异步方法,它会立即返回一个空数组,但仅在异步查询的结果可用时(例如,当它从AJAX请求获得响应时)才会填充它:

因此,由于您的控制器不等待查询结果,因此它将当前未定义的
结果[0]
分配给其
模型
变量


第二种方法是有效的,因为在这种情况下,一旦收到对异步请求的响应,视图就会重新呈现自己,因此它会重新评估
结果[0]
,其中包含从AJAX请求接收的元素。

,工厂的查询方法无疑是一种异步方法,它会立即返回一个空数组,但仅在异步查询的结果可用时(例如,当它从AJAX请求获得响应时)才会填充它:

因此,由于您的控制器不等待查询结果,因此它将当前未定义的
结果[0]
分配给其
模型
变量


第二种方法是有效的,因为在这种情况下,一旦收到对异步请求的响应,视图就会重新呈现自己,因此它会重新评估
结果[0]
,其中包含从AJAX请求接收的元素。

,工厂的查询方法无疑是一种异步方法,它会立即返回一个空数组,但仅在异步查询的结果可用时(例如,当它从AJAX请求获得响应时)才会填充它:

因此,由于您的控制器不等待查询结果,因此它将当前未定义的
结果[0]
分配给其
模型
变量


第二种方法是有效的,因为在这种情况下,一旦收到异步请求的响应,视图就会重新呈现自身,因此它会重新评估
结果[0]
,其中包含从AJAX请求接收的元素。

因为您希望在填充数组的第一个元素后获取该元素,您可以在回调中执行此操作:

Factory.query(function(result) {
    this.model = result[0];
});

由于您希望在填充数组后获取数组的第一个元素,因此可以在回调中执行此操作:

Factory.query(function(result) {
    this.model = result[0];
});

由于您希望在填充数组后获取数组的第一个元素,因此可以在回调中执行此操作:

Factory.query(function(result) {
    this.model = result[0];
});

由于您希望在填充数组后获取数组的第一个元素,因此可以在回调中执行此操作:

Factory.query(function(result) {
    this.model = result[0];
});

你能把工厂的代码贴出来吗?看起来你在如何传递数据以及如何期望数据被传递方面有问题。你能发布工厂代码吗?看起来你在如何传递数据以及如何期望数据被传递方面有问题。你能发布工厂代码吗?看起来你在如何传递数据以及如何期望数据被传递方面有问题。你能发布工厂代码吗?似乎您在如何传递数据以及希望如何传递数据方面存在问题。OP使用
控制器作为
语法,将控制器本身绑定到作用域。奇怪的是,如果我使用result[0],它不起作用,而当我使用result时,它起作用,但我完全确定我得到了一个数组OP使用
控制器作为
语法,它将控制器本身绑定到作用域。奇怪的是,如果我使用result[0],它不起作用,而当我使用result时,它起作用,但我完全确定我得到了一个数组OP使用
控制器作为
语法,它绑定了控制器