Angularjs.从AngularJS控制器访问属性

Ser*_*erg 4 angularjs

我试图用控制器访问图像src来保存它,但无法弄清楚如何做到这一点.

我的模板:

    <img data-ng-model="book.image"
         style="width: 300px; height: 200px;"
         ng-src="data:image/png;base64,iVBORw0K...SuQmCC">
    <a data-ng-click="save(book)" class="btn">Submit</a>
Run Code Online (Sandbox Code Playgroud)

我的控制器:

    controller('BookEditController', [ '$scope', '$meteor', function ($scope, $meteor) {
        $scope.save = function (book) {
            if (typeof book == 'object') {
                var books = $meteor("books");
                var id = books.insert(book);
            }
        };
    }])
Run Code Online (Sandbox Code Playgroud)

小智 5

一个选项是使用一个指令并将一个名为save的方法应用于它,它将处理在image标签上找到的src属性.
JS

var app = angular.module('myApp', []);
app.directive('saveImage', function () {
    return {
        transclude: true,
        link: function (s, e, a, c) {
            s.save=function(){
                alert(a.src);
            };
         }
    };
});
Run Code Online (Sandbox Code Playgroud)

HTML

<div >
    <img save-image style="width: 300px; height: 200px;" src="http://placehold.it/350x150"> <a ng-click="save()" class="btn">Submit</a>

</div>
Run Code Online (Sandbox Code Playgroud)

这是在jsfiddle中实现的代码.

另一种选择是将示波器隔离到控制器,但仍然将图像应用于它而不是函数.

JS

var app = angular.module('myApp', []);
app.directive('saveImage', function () {
    return {
        transclude: true,
        link: function (s, e, a, c) {
            s.image = a.src;

        }
    };
});

function cntl($scope) {
    $scope.save = function (img) {
        alert($scope.image || 'no image');
    }
}
Run Code Online (Sandbox Code Playgroud)

HTML

<div ng-controller='cntl'>
    <img save-image style="width: 300px; height: 200px;" src="http://placehold.it/350x150"> <a ng-click="save()" class="btn">Submit</a>

</div>
Run Code Online (Sandbox Code Playgroud)

注意添加的ng-controller ="cntl".

这是那个的JSfiddle.