$ scope不调用内部函数

时间:2013-03-23 11:15:55

标签: javascript angularjs javascriptmvc

现在我们在调用DataService(Parse)的控制器中遇到一个问题,问题是这段代码不起作用:

    function MainCtrl($scope, DataService, $location)
{

    $scope.actionList = function() {

            // Call the service and fetch the list of signatures that match the given action ID
            DataService.getActions(function (results) {
                $scope.$apply(function () {
                    // Apply the results to the signatureList model so it will refresh the table in the view
                    $scope.actionList = results;
                });
            });

    };
}

我在DataService行中放了一个断点,但它没有被击中,但是如果我以这种方式实现Ctrl它会接到电话并且它可以工作!!:

function MainCtrl($scope, DataService, $location)
{            

                // Call the service and fetch the list of signatures that match the given action ID
                DataService.getActions(function (results) {
                    $scope.$apply(function () {
                        // Apply the results to the signatureList model so it will refresh the table in the view
                        $scope.actionList = results;
                    });
                });          

    }

知道为什么会发生这种情况?

除了那个曾经工作(第二个实现)我想展示活动的属性,如果我试图得到这样的属性它不起作用:

<div id="wrapper"><div id="scroller">
<div ng-controller="MainCtrl">
    <ul id="thelist">
        <li ng-repeat="action in actionList">{{action.get('Action')}}</li>  
    </ul>
</div> 
</div></div>

但如果我试图让整个对象像{{action}}那样我可以看到所有条目。

2 个答案:

答案 0 :(得分:5)

将控制器更改为

function MainCtrl($scope, DataService, $location) {

    $scope.getActionList = function() {
        DataService.getActions(function(results) {
                    $scope.$apply(function() {
                                $scope.actionList = results;
                            });
                });

    };

    $scope.getActionList();
}

然后,如果您想重新加载actionList来电getActionList()

答案 1 :(得分:0)

  

知道为什么会发生这种情况?

在第一个示例中,您只是在对象actionList上定义名为$scope的函数。定义一个函数不会执行它(参见@ Arun的答案)。

要在视图中显示数据,可以使用常规JavaScript点表示法。如果action对象如下所示:

{ prop1: 'property 1', prop2: [1, 2], prop3: { name: 'Javito'} }

您可以按如下方式编写视图/ HTML:

<ul id="thelist">
   <li ng-repeat="action in actionList">
      prop1: {{action.prop1}}<br>
      prop2: {{action.prop2[0]}} {{ action.prop2[1] }}<br>  <!-- or use another ng-repeat here -->
      prop3.name: {{action.prop3.name}}
   </li>  
</ul>