首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将更新后的数组值绑定到指令?

如何将更新后的数组值绑定到指令?
EN

Stack Overflow用户
提问于 2016-08-27 03:02:39
回答 1查看 38关注 0票数 2

我有来自使用socket.io的服务器的消息,每次收到消息我都将它添加到$scope.event数组中,当我在控制器中收到消息时,如何更新指令隔离作用域message的值,这不会发生在下面的代码中?

directive.js

代码语言:javascript
复制
angular.module("App").directive('progressBarCustom',function () {
    return {
        restrict: 'E',
        scope:{
            message: "=",
            fileSize: "=",
        },
        templateUrl: '/view/partials/progressbar.html',
        controller: "StCtrl",
        link: function(scope, el, attrs) {
            var data = scope.message;
    }
});

main.html

代码语言:javascript
复制
  <ul style="list-style: none;">
                            <li ng-repeat="message in event track by $index" ng-class="{lastItem: $last}"><span><strong>Log:</strong></span><span>{{message}}</span></li>
                        </ul>

ctrl.js

代码语言:javascript
复制
socket.on('ditConsumer',function (data) {
        $scope.event.push(data);
}

$scope.event = ["lorem ipsum","lorem ipsum"];

template.html

代码语言:javascript
复制
<progress-bar-custom ng-show="progressBarFlag" message="event"  file-size="selectedFileSize"></progress-bar-custom>
EN

回答 1

Stack Overflow用户

发布于 2016-08-27 04:27:25

我从来没有使用过socket.io,但是回调似乎是在Angular控件之外执行的,所以你应该调用一个$scope.$apply来让Angular知道这个变化。

试试这个:

代码语言:javascript
复制
socket.on('ditConsumer',function (data) {
  $scope.$apply(function() {
    $scope.event.push(data);
  });
}

From documentation:

$apply()用于从angular框架外部执行angular中的表达式。(例如,来自浏览器DOM事件、setTimeout、XHR或第三方库)。因为我们正在调用angular框架,所以我们需要执行异常处理的适当作用域生命周期,执行监视。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39173127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档