获取一些AngularJS对象的值

retrieving some AngularJS object value

本文关键字:对象 AngularJS 获取      更新时间:2023-09-26

我是新来的AngularJS,假设我有

<ul>
  <li ng-repeat="todo in todos">
     <span> ...</span>

其中每个todo是某个对象,我们设{"title": "some title", "description":"some description"}。我现在想检索这个todo的整个值,当一些变化事件发生在span标签内。

如果span引起了事件,您可以这样做…

<ul>
    <li ng-repeat="todo in todos">
        <span ng-click="doSomething(todo)"> ...</span>

你总是可以使用$watch并注册一个监听器回调,以便在你的范围(对象)发生变化时执行。

的例子:html:

<div ng-app="App"  ng-controller="ctrl">
<div>
    <ul>
      <li ng-repeat="todo in todos">
          <span><input type="text" ng-model="todo.title">{{todo.title}}</span>
      </li>
    <ui>
        my event : {{myEvent}}
</div>

js:

var app=angular.module('App', []);
function ctrl($scope) {
    $scope.myEvent="";
    $scope.todos = [
              {"title": "some title1", "description":"some description1"},
              {"title": "some title2", "description":"some description2"},
              {"title": "some title3", "description":"some description3"}
                    ]
    $scope.$watch('todos', function (newVal) {
        $scope.myEvent=newVal;
    }, true);
 }

实例:http://jsfiddle.net/choroshin/vLJ92/

如果你想对对象进行更改,最好使用input元素而不是span标签,有指令'ng-change',它将在用户更改内容时触发更改,参见此plunker http://plnkr.co/edit/HQgGB1HRAjUE7EVxiJZ5?p=preview

最简单、最直接的方法是:

    <ul>
      <li ng-repeat="todo in todos">
         <span>{{todo.title}}</span>
         <span>{{todo.description}}</span>
         <input type="text" ng-model="todo" />

请注意,我添加了一个输入文本字段,只是为了展示当你将对象分配给指令的属性时,你不会用双花括号把你的角形对象括起来。