Javascript 无法从AngularJS工厂绑定数据

Javascript 无法从AngularJS工厂绑定数据,javascript,angularjs,factory,Javascript,Angularjs,Factory,我是AngularJS新手,以webSocket为例作为我应用程序的基础 应用程序应该从webSocket获取jSon数据并填充UI。示例包含带有colaction变量的工厂,绑定在HTML模板上给出结果,但当我添加searchStatus变量时,在UI上看不到它的自动更新(绑定)。为什么? <div ng-app="portScanner"> <h2>Port scanner</h2> <div ng-cont

我是AngularJS新手,以webSocket为例作为我应用程序的基础 应用程序应该从webSocket获取jSon数据并填充UI。示例包含带有colaction变量的工厂,绑定在HTML模板上给出结果,但当我添加searchStatus变量时,在UI上看不到它的自动更新(绑定)。为什么?

    <div ng-app="portScanner">
        <h2>Port scanner</h2>

        <div ng-controller="SimplePortScannerController">

            Status : {{ searchStatus }}

            <form ng-submit="submit(address)">
                <input type="text" ng-model="address" autofocus required>
                <button type="submit">Check ports</button>
            </form>

        {{sum}}<br>

        <div ng-repeat="message in Messages.collection | orderBy:'-timeStamp' track by $index">
            <!--{{message.statusString}}-->
            {{message}}
            <br>
        </div>

        </div>
    </div>

谢谢

因为执行
searchStatus=messageJson.statusString时,返回对象中的
searchStatus:searchStatus
会丢失其引用,它在
消息
中始终保持
未定义

只需提前创建工厂的返回对象并更新它,而不是单个变量。比如说

var ws = $websocket('ws://localhost:8080/portscanner2/scanner'),
    obj = {
        collection: [],
        searchStatus: null,
        send: function(message) { /* no change here */ }
    };

ws.onMessage(function (event) {
    console.log('message: ', event);

    messageJson = angular.fromJson(event.data);
    if (messageJson.statusString){
        obj.searchStatus = messageJson.statusString;
    }

    obj.collection.push(angular.fromJson(event.data));
});

// etc

return obj;
此外,您的模板应该具有

Status : {{ Messages.searchStatus }}

为什么您使用
SimplePortScannerController作为SimpleTRL
而引用
$scope
?是的,右边,我将更新,左边只更新SimplePortScannerController,没有as。谢谢,它可以工作。刚在第一行把昏迷改成分号。为什么searchStatus会丢失引用,但不会丢失集合?我应该在什么地方看书吗?这是不是因为收集不是创建的,而是推送的?@Pavlo是的,就是这样。
集合
变量永远不会重新分配,因此会保持引用。此外,您不必替换逗号;我的答案是正确的语法是的,它也和逗号一起工作。我刚刚意识到两者(逗号或分号)在这里的意思是一样的。我错过了,因为我从来没有在多变量创建中使用过这样的语法。谢谢
Status : {{ Messages.searchStatus }}