保存元素文本而不是输入

时间:2015-08-25 18:47:15

标签: jquery angularjs

我创建了一个输入字段,用户可以在其中输入电影标题并单击将标题插入数据库的div。但我想要的不是保存用户输入,而是将文本值保存在被点击的元素中。

这是目前的情况,

%div{"ng-click" => "addMovie()"}
  %input{:type => "text", "ng-model" => "title"}
  addMovie action.

我想要的,

%div{"ng-click" => "addMovie()"}
  %span.title{"ng-model" => "title"}
    {{ movie.original_title }}

现在当用户点击div时,它应该将文本(movie.original_title)保存在span标记内。

控制器,

$scope.addMovie = function() {

  if(!$scope.title || $scope.title === '') { return; }
  movies.create({
    title: $scope.title,
  }).then(init);

  $scope.title = '';
};

但是我不确定要在哪里更改,我仍然可以使用ng-model分配title或者我应该在控制器中更改它吗?

这是标题的显示方式。用户可以搜索电影标题,并使用所有标题创建下拉列表。我希望用户点击.addmovie div,它应该保存标题,发布日期等内容。

%input{"ng-change" => "search(searchquery)", "ng-model" => "searchquery", "ng-model-options" => "{ debounce: 500 }", :id => "search_input", :placeholder => "Search a movie!"}
%ul#showresults
  %li.search_results{"ng-repeat" => "movie in movieList"}
    .addmovie
      %span
        Add Movie
    %img{"ng-src" => "http://image.tmdb.org/t/p/w500/{{ movie.poster_path }}"}
    %span
      {{ movie.original_title }}

编辑接近答案,这很简单

$scope.addMovie = function() {
    movies.create({
      title: $('.title').text(),
    }).then(init);
  };

现在的问题是它会保存所有.titles而不是点击的所有{{1}},但这应该是一个简单的解决方法。

1 个答案:

答案 0 :(得分:0)

我不确定这是不是应该这样做,但它对我有用。

$scope.addMovie = function() {
  movies.create({
    title: $(event.currentTarget).parent().find('.title').text()
  }).then(init);
};