Angular JS控制器功能未触发

时间:2014-05-23 16:29:27

标签: javascript angularjs

我正在创建一个简单的角度js app,但是控制器函数'GetListings()'没有触发。

<body ng-controller="pageController">
    <div id="wrapper">
        <h1>Find Locations</h1>
        <p>Category:<br/><select id="category" name="category">
                            <option value="associate">associate</option>
                            <option value="contractor">contractor</option>
                            <option value="either" selected="selected">either</option>
                        </select></p>
        <p>Enter zip code:<br/><input type="text" id="zipcode" name="zipcode" size="20"></p>
        <p>Enter radius (mi):<br/><input type="text" id="radius" name="radius" size="20"></p>
        <p><input type="button" id="lookup" value="lookup locations" ng-click="GetListings()"></p>
    </div>
    <div id="content">
        <div id="mainArea">
            <div class="directoryEntry" ng-repeat="listing in listings">
                <h4>{{listing.name}}</h4>
            </div>
        </div>
    </div>
</body>

这是我正在使用的角度代码:

function pageController ($scope) {

    $scope.listings =  [ {name : 'a' }, { name : 'b' }, { name : 'c' }, {name : 'd'}];

    $scope.GetListings = function () {

       console.log($scope.listings);

       $scope.listings.push( {name: 'e' } );

    }

}

listing.name属性正确呈现(a,b,c,d)。但是'e'没有被添加。

3 个答案:

答案 0 :(得分:1)

更改以下行

<body ng-controller="pageController" ng-app>

至少需要在angularjs中使用ng-app

答案 1 :(得分:1)

根据您的代码,单击“查找位置”按钮时会调用GetListings()

根据你的评论,

  

它应该出现在ng-repeat中吗?它应该出现在页面上。鉴于第一个console.log没有触发,我怀疑它是否进入GetListings函数

假设您想在开始时调用GetListings(),我已将fiddle分叉,其中“e”列在开头。您只需要在控制器中调用该函数一次即可在列表中按“e”。

答案 2 :(得分:0)

我认为您的代码没有任何问题......

我创建了一个带有div而不是body的JSFiddle项目,一切都按预期工作。你正在使用哪个版本的Angular?

<div ng-app>
  <div ng-controller="pageController">
      ....
  </div>
</div>