dom改变后的模型更新

时间:2014-06-03 13:51:23

标签: javascript angularjs angularjs-directive

我正在使用bPopUp Jquery插件来制作模态。

在我的角度应用程序中,我使用事件广播将变量从范围传递到另一个。

我遇到的问题是,如果我在调用模式之前没有使用超时,则不会使用更新的新模型,但占位符将是" nameBefore"而不是值attrs.folderName。 所以它适用于超时,但你知道如何不用吗?

请注意,如果我将超时置于$scope.folderToEdit = {name: name,key: key};

,它也会起作用

这是我的HTML

<body>
<layout>
    <menu>
    </menu>
    <wrappers>
        <article ng-repeat="folder in folders">
                            <!-- some html -->
            <editFolder folder-name="folder.name" folder-key="folder.key"></editFolder>
        </article>
    </wrappers>
</layout>
<div folderEditPopUp>
          <input type="text" placeholder="{{folderToEdit.name}}"></div>
</body>

这是我的javascript。

app.directive('folderEditPopUp', function() {
    return {
        restrict: 'A',
        controller: function($scope, $rootScope){
            $scope.folderToEdit = {
                    name: "nameBefore",
                    key: "key"
                };
            $rootScope.$on("folderEdition", function (event, name, key) {                    
                $scope.folderToEdit = {
                    name: name,
                    key: key
                };
            });
        }
    }
});

app.directive('editFolder',['$rootScope', '$timeout', function ($rootScope, $timeout) {
    return {
        restrict: 'E',
        template: '<a><img src="img/bt-edit.svg" alt="Modifier"></a>',
        link: function(scope, elem, attrs) {
            elem.bind("click", function(){
                $rootScope.$broadcast("folderEdition", attrs.folderName, attrs.folderKey);

                $timeout(function(){
                    $(attrs.thePopUp).bPopup(); 
                }, 50);

            })
        }
    }
}]);

0 个答案:

没有答案