簡體   English   中英

在非角度事件中更改時,angularjs 1.6模型的兩種方式綁定不會更新

[英]angularjs 1.6 two way binding of model doesn't update when changed inside a non angular event

angularjs代碼

var app = angular.module("testApp", []);   
app.controller('captureCtrl', function () { 
    var vm = this;
    vm.obj = {
        show: false
    };

    addressControls.control.listen('populate', function (address, variations) {
        vm.line1 = address.Line1;
        vm.line2 = address.Line2;
        vm.city = address.City;
        vm.postcode = address.PostalCode;
        vm.obj.show = true;
    });

    vm.test = function () {
        vm.obj.show = true;
    }
});

在“ populate”事件中進行更改時,視圖中的vm.obj.show值不會更新,但在vm.test函數中確實會更新。 我如何使它起作用,為什么綁定不能在視圖中更新? 我正在使用angularjs 1.6。

嘗試$ scope.apply()。

$scope.$apply(function () {
      //Your Code here 
    });

編輯1:對不起-我完全忽略了一些東西。 您使用的是“ this”而不是“ $ scope”。

編輯2:由於它是一個非角度函數,您肯定在那里需要$ scope。$ apply()。

嘗試這樣做:

var app = angular.module("testApp", []);   
    app.controller('captureCtrl', function ($scope) {
        $scope.obj = {
            show: false
        };

        addressControls.control.listen('populate', function (address, variations) {

                $scope.line1 = address.Line1;
                $scope.line2 = address.Line2;
                $scope.city = address.City;
                $scope.postcode = address.PostalCode;
                $scope.obj.show = true;
                $scope.$apply();
        });

        $scope.test = function () {
            $scope.obj.show = true;
        };
    });

通常,如果要公開DOM的屬性,請使用“ $ scope”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM