我有这个控制器和这个视图(html)。 如果我给$ scope.article.Context一个初始值,它将显示在视图中。 (手段 视图识别控制器)。 当我更改控制器函数内的$ scope.article.Context值时,我不会在视图中看到它发生变化。 任何的想法 ? 谢谢!!!
控制器:
angular.module('generalApp', [])
.controller('menuController', function ($scope, $http) {
$scope.article = {Context:"initial value"} ;
$scope.menuLinkSelected = function (articleId) {
$http.post("Home/GetArticle?articleId=" + articleId).then(function (response) {
$scope.article.Context = "new value";
$scope.$apply();
});
};
HTML:
<body ng-app="generalApp">
<div ng-controller="menuController">
<div ng-include="'partials/topMenu.html'"></div>
<div ng-include="'partials/sideMenu.html'"></div>
<div ng-model="article">
<label>{{article.Context}}</label>
</div>
<input type="button" value="click" onclick="ziba()" />
</div>
答案 0 :(得分:1)
<强>解决方案:强>
<div>
<label ng-bind="article.Context"></label>
</div>
当您ng-model
将div
分配给{{1}}时,{{1}}无法执行任何操作。
JSFiddle:
您可以使用自己的示例working jsfiddle。
答案 1 :(得分:1)
你确定你的$ http POST请求实际上正在返回吗?你可以通过改变你的控制器来更新$ scope.article.Context来测试这个:
var timerFn = function(){
$scope.article.Context = "It works!";
};
$timeout(timerFn, 1000);
如果这是问题,您可能想尝试使用此$ http语法来处理POST请求的回调:
$http.post('someUrl')
.success(function(data, status){
console.log(data);
})
.error(function(data, status){
console.log(data);
});
图片的标题说明:
(1)您可以将DOM中的ng-model设置为&#34; article.Context&#34;虽然你有什么应该工作。
(2)你不需要在Angular中调用$ scope。$ apply()。它仅用于在Angular之外发生更改时更新绑定。