请教一个angularjs的数据双向绑定的问题

Solowave 发布于 2014/12/31 16:11
阅读 2K+
收藏 1

html里已经用ng-repeat绑定过了

为什么使用angular自带的依赖$http就可以在数据更新的时候自动更新到视图。

app.controller('StoreController', ["$http", function($http){
        var store = this;
        store.products = [];
        $http.get("./store-products.json").success(function(data) {
            store.products = data;
        });
    }]);

而我直接使用setTimeout在一定的时间后更新products的值,却没有更新到视图上呢,

不是说双向绑定的么,现在我该怎么处理才能让双向绑定名副其实啊。

app.controller('StoreController', ["$http", function($http){
        var store = this;
        store.products = [];
        setTimeout(function() {
            store.products = [1,2,3];
        }, 3000);
    }]);

加载中
0
YueZheng
YueZheng

$http就可以在数据更新的时候自动更新到视图?这个是什么意思??

$scope在哪里?变量需要绑到scope里。

0
shyoko
shyoko
1. 使用$scope
2. 使用$timeout
app.controller('StoreController', ['$scope', '$timeout', function($scope, $timeout) {
  $scope.products = [];
  $timeout(function() {
    $scope.products = [1,2,3];
  }, 3000);
}]);




Solowave
Solowave
不好意思啊 ,我刚刚学习angularjs, 谢谢。
0
Solowave
Solowave

引用来自“iris4yo”的评论

1. 使用$scope
2. 使用$timeout
app.controller('StoreController', ['$scope', '$timeout', function($scope, $timeout) {
  $scope.products = [];
  $timeout(function() {
    $scope.products = [1,2,3];
  }, 3000);
}]);




谢谢你的回答,采用$scope后, html里绑定控制器的缩写(如:

JishiController as jishi
),就没法使用了。缩写去掉然而是可以显示的。


而且, 使用$timeout和$http是同一个道理,都是使用了angularjs内置的服务,内置的服务可以自动完成数据模型更新到视图。

我如果用jquery的  $.getScript, 在 它的回调里更新$scope.catalogs测试仍然不会自动更新到视图

$.getScript(config.catalog, function() { if ('undefined' !== typeof yixuan_cates) { //$scope.catalogs = yixuan_cates || {};  $scope.catalogs = [1, 2, 3];
  }
});

angularjs自带的$http服务好像没有getScript的方法

返回顶部
顶部