未达到AngularJS ng-click功能

时间:2015-08-29 12:57:48

标签: javascript angularjs angularjs-controller angularjs-ng-click angularjs-controlleras

当我将新产品添加到产品列表时,它无效。所以产品加载得很好,但ng-click函数没有被调用。 (我没有执行addProduct函数中的警报。

HTML

<div ng-controller="ProductController as ProductCtrl">
Zoeken <input type="text" ng-model="search" placeholder="Search" />
<div>
    Filter Type
    <button ng-repeat="cat in categories" ng-click="filterProductsByCategory(cat)">{{cat}}</button>
</div>
<table cellpadding="5" cellspacing="0" border="1">
    <tr>
        <th>ID</th>
        <th>Product</th>
        <th>Type</th>
        <th>Price</th>
        <th>Toevoegen</th>
    </tr>
    <tr ng-repeat="product in ProductCtrl.products">
        <td>{{product.id}}</td>
        <td>{{product.name}}</td>
        <td>{{product.type}}</td>
        <td>{{product.price}}</td>
        <td></td>
    </tr>
    <tr><td></td>
        <td><input type="text" name="newProduct.name" ng-model="productCtrl.newProduct.name"></td>
        <td><input type="text" name="newProduct.price" ng-model="productCtrl.newProduct.price"></td>
        <td><input type="text" name="newProduct.type" ng-model="productCtrl.newProduct.type"></td>
        <td><a href ng-click="productCtrl.addProduct()">Product {{productCtrl.newProduct.name}} toevoegen</a></td></tr>
</table>

任何帮助都会受到赞赏。

控制器:

app.controller('ProductController', function(productService) {

    var that = this;

    productService.getProducts().success(function(data) {
        that.products = data;
    });

    this.newProduct = "";
    this.addProduct = function() {

        that.products.push(this.newProduct);
        window.alert(that.products);
        this.newProduct = "";

    };
});

1 个答案:

答案 0 :(得分:4)

这是一个错字,您的控制器别名是ProductCtrl而不是productCtrl,另外您需要更改ng-model以更正相同的内容

productCtrl替换为ProductCtrl将解决您的问题。

<tr>
  <td>
     <input type="text" name="newProduct.name" ng-model="ProductCtrl.newProduct.name"/>
  </td>
  <td>
    <input type="text" name="newProduct.price" ng-model="ProductCtrl.newProduct.price"/>
  </td>
  <td>
     <input type="text" name="newProduct.type" ng-model="ProductCtrl.newProduct.type"/>
  </td>
  <td>
    <a href ng-click="ProductCtrl.addProduct()">
       Product {{productCtrl.newProduct.name}} toevoegen
    </a>
  </td>
</tr>