Angular JS不反映控制器

时间:2015-12-08 21:42:44

标签: javascript angularjs

我见过一些与此类似的问题,但我无法解决我的问题。 我有角度控制器:

app.controller('MyFormCtrl', function($scope, Item) {

    $scope.searchResult = {value: 'Test'};

    $scope.search = function() {
        console.log($scope.searchResult);
        $scope.searchResult.value = "Clicked";
    }
}

和html模板:

<div ng-controller="MyFormCtrl">
  <p>{{searchResult.value}}</p>
  <p align="center"><a href="#" ng-click="search()">Search</a></p>
</div>

我无法强制它反映在控制器中所做的更改。在加载时,我看到变量的默认值:'Test'和'Test name'。但是当我单击注册按钮时,新值被赋予控制器中的变量,但在html页面没有变化。我想范围有一些问题。我是angularjs的新手,所以我无法帮助我,所以我想是时候对我的特殊情况提供一些特别的帮助了。

更新1。项目 - 是一个休息api的资源,它可以工作,我在调试过程中看到firebug中的结果,但没关系。即使我删除了这一行,但是searchResult仍然没有更新。但是在第一次点击后的JS控制台中,我看到值'测试'(这是正确的),在第二次点击时我看到cosole值'Clicked',这意味着新的值被分配,我在firebug的调试期间看到相同,但是在HTML页面我仍然看到'测试'的价值。 我试过做$ scope。$ apply() - 它没有帮助。我设法找到的最接近的案例是这个问题:changing a controller scope variable in a directive is not reflected in controller function,但在这里我看到更复杂的逻辑。

更新2。有很多答案,与Item调用混淆。我删除了Items调用,并使代码尽可能简单。它仍然没有反映变量searchResult的变化。

更新3。 没有问题,我从简单的例子开始并获得工作结果,似乎并在初始项目期间引入了一些错误。

2 个答案:

答案 0 :(得分:1)

  

t正在工作你正在控制器中使用项目参数将其删除   看它工作,如果你使用角度新的,然后使用角度   模块

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" >
  <div ng-controller="myFormCtrl">
  <p>{{searchResult.value}}</p>
  <p align="center"><a href="#" ng-click="search()">Search</a></p>
</div>
  </div>

<script>
  var myApp = angular.module("myApp", []);
myApp.controller('myFormCtrl', function($scope) {

    $scope.searchResult = {value: 'Test'};

    $scope.search = function() {
        console.log($scope.searchResult);
        $scope.searchResult.value = "Clicked";
    }
})
  </script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

AngularJS文档就是一个例子。从那里开始,逐步引入您的Item.search()函数

https://docs.angularjs.org/api/ng/filter/filter