【问题标题】:AngularJS - binding input file scope to a different scopeAngularJS - 将输入文件范围绑定到不同的范围
【发布时间】:2013-03-17 09:08:59
【问题描述】:

不确定如何正确命名我的问题,我想在我的情况下它也可以命名为“范围未检测到 DOM 操作”,但这完全取决于我的问题的解决方法。

首先,我在 AngularJS 主网站上使用了与 Mongolab 连接的 Projects 应用程序的官方示例。唯一的区别是我想添加一个文件输入,它读取文件名及其 lastModifiedDate 属性,然后将这些值应用于我的表单。为了使文件输入工作,我遵循了这个example here

我让它工作了,但问题是当值被应用到我的表单范围时,并没有接受更改。

我正在我的 .apply() 函数中进行 DOM 操作,并且也使用了 $compile,但是缺少一些东西。或者也许有一种更简单的方法,完全不进行 DOM 操作?

这是我目前所拥有的,请看看这个 plunker - http://plnkr.co/edit/mkc4K4?p=preview (只需单击加号图标添加新条目,然后尝试选择一个文件。)

【问题讨论】:

    标签: forms input angularjs scope bind


    【解决方案1】:

    需要在 CreateCtrl 中添加 watch 语句

    function CreateCtrl($scope, $location, Movie) {
    
        $scope.inputfile = {};
        $scope.movie = {};
    
        $scope.$watch('inputfile.file', function(value){
          $scope.movie.filename = value ? value.name : '';
          $scope.movie.dateadded = value ? value.lastModifiedDate : '';
        })
    
        $scope.save = function() {
            Movie.save($scope.movie, function(movie) {
                $location.path('/edit/' + movie._id.$oid);
            });
        };
    }
    

    演示:Sample

    【讨论】:

    • 谢谢 Arun,这很完美,甚至不需要 DOM 操作!
    猜你喜欢
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    相关资源
    最近更新 更多