角度绑定不会改变

时间:2014-04-20 21:41:27

标签: angularjs

我有这个控制器和这个视图(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>

2 个答案:

答案 0 :(得分:1)

<强>解决方案:

<div>
   <label ng-bind="article.Context"></label>
</div>

当您ng-modeldiv分配给{{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之外发生更改时更新绑定。