首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用使用onDrag回调的双向数据绑定使更改在角中保持不变?

如何使用使用onDrag回调的双向数据绑定使更改在角中保持不变?
EN

Stack Overflow用户
提问于 2015-06-06 15:31:27
回答 2查看 166关注 0票数 0

我试图更新一个span的文本后,回调函数的角度。

以下是我的HTML:

代码语言:javascript
复制
    <div ng-controller="onDragController">
         <div id="draggableArea">
        <div id="rectangle1" data-drag="true" jqyoui-draggable="{onDrag: 'dragCallback'}" data-jqyoui-options="{containment: '#draggableArea'}"></div>
    </div>


    <div>
        <span ng-model="rectangleOne">{{rectangleOne.leftOffset}}</span>
    </div>

</div>

我的控制器是:

代码语言:javascript
复制
var App = angular.module('drag-and-drop', ['ngDragDrop', 'ui.bootstrap']);

App.controller('onDragController', function($scope) {

    $scope.rectangleOne = {};

    $scope.rectangleOne.leftOffset = 'ASDF';

    $scope.dragCallback = function (event, ui) {

        $scope.rectangleOne = {leftOffset: '12345'};            

    };

});

如果在回调函数中抛出警报,则会看到leftOffSet已被更新,但在我的HTML页面上{rectangleOne.leftOffset}保持不变。

我错过了什么.?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-06 16:04:02

$apply中使用dragCallback,如下所示:

代码语言:javascript
复制
$scope.dragCallback = function(event, ui) {
    $scope.$apply(function() {
        $scope.rectangleOne = {
            leftOffset: '12345'
        };
    });
};

这将更新作用域中的leftOffset。这是一个柱塞

票数 0
EN

Stack Overflow用户

发布于 2015-06-06 16:14:08

它可能有助于更好地理解角如何进行双向数据绑定。这篇关于如何应用工作的博客文章,以及人们为什么要使用它的原因,都是很好的。

概括地说,对于您对$scope.rectangleOne**:**的更改,

每次您做这样的简单更改时,都可以调用$scope.$digest()。你需要这样做,这样角质知道你的绑定数据是否被更新了。

或者,您可以使用$scope.$apply,在对$apply的回调中对$scope.rectangleOne进行更改。它也是这样做的,$apply最终间接地调用了$digest()

代码:

代码语言:javascript
复制
$scope.$apply(function() {
    $scope.rectangleOne.leftOffset = '12345';
});

希望这有助于解决你的问题,并增加一些理解,正在发生的幕后!

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

https://stackoverflow.com/questions/30684593

复制
相关文章

相似问题

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