我见过一些与此类似的问题,但我无法解决我的问题。 我有角度控制器:
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。 没有问题,我从简单的例子开始并获得工作结果,似乎并在初始项目期间引入了一些错误。
答案 0 :(得分:1)
t正在工作你正在控制器中使用项目参数将其删除 看它工作,如果你使用角度新的,然后使用角度 模块
<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;
答案 1 :(得分:0)
AngularJS文档就是一个例子。从那里开始,逐步引入您的Item.search()
函数