2

我是 Angular 的新手,并尝试根据从服务器返回并由前面生成的数据,ng-click使用服务在控制器之间传递一些数据。factoryng-repeat

这是 HTML:

<div ng-click="go('{{img.hashtag}}')" ng-repeat="img in obj" ng-style="{'background':url({{img.url}})'}">
  <span class="boxName">{{img.hashtag}}</span>
</div>

这工作正常:

ng-click="selectHash($event);go('some simple string')"

而这不是:

ng-click="selectHash($event);go('{{img.hashtag}}')"

因为它被解释为一个简单的字符串,而不是从对象中提取的数据。

go函数负责导航到另一个页面并将数据传递给相应的controller

$scope.go = function (hash1) {
    $location.path("hash");
    $scope.hashFac = hashFac;
    $scope.hashFac.hash = hash1;
};

工厂服务:

appName.factory("hashFac",function(){
    return {

    };
});

如何从img对象中提取数据并使用它继续发送ng-click

4

3 回答 3

2

您是否尝试过不使用引号'和花括号{{}}

ng-click="selectHash($event);go(img.hashtag)"
于 2016-02-14T11:00:36.060 回答
2

您不应该在&指令中真正使用{{}}插值指令,而且在生成背景 url 时,您应该使用字符串连接。ng-clickng-style

<div ng-click="go(img.hashtag)" ng-repeat="img in obj" 
  ng-style="{'background': 'url(' + img.url + ')'}">
于 2016-02-14T11:00:38.480 回答
1

指令ng-click由 Angular 评估,因此您不需要在那里使用任何大括号。将两个函数调用合并为一个:

$scope.buttonClicked = function(e, img) {
    // e.preventDefault() or whatever
    $scope.selectHash(e);
    $scope.go(img.hashtag);
}

然后在您的模板中使用:

ng-click="buttonClicked($event, img)"
于 2016-02-14T11:03:52.737 回答