【发布时间】:2016-09-17 21:38:07
【问题描述】:
我是 angualarjs 的新手,刚开始使用 angularjs 1.5 组件构建页面。我试图从复数角度理解以下示例。 angularjs 是否通过部分应用程序/currying 等扩展了 javascript?
movie-rating.component.html:
函数model.setRating() 与属性为value 的对象一起传递。
<span ng-repeat="entry in model.entries track by $index">
<span ng-click="model.setRating({ value: $index + 1})" class="glyphicon {{entry}}">
</span>
</span>
movie-rating.component.js:
setRating 使用“&”绑定。
module.component("movieRating", {
templateUrl: "/ps-movies/movie-rating.component.html",
bindings: {
value: "<",
max: "<",
setRating: "&"
},
movie-list.component.html:
然而,在使用组件时,set-rating 被分配了一个带有两个 参数model.setRating(movie, value) 的函数?而movie实际上是来自<tr ng-repeat="movie in model.movies">的一个值?但是value?
<tr ng-repeat="movie in model.movies">
<td>{{movie.title}}</td>
<td>{{movie.length}}</td>
<td>
<movie-rating value="movie.rating" max="5" set-rating="model.setRating(movie, value)">
</movie-rating>
</td>
movie-list.component.js:
而在下面的代码model.setRating = function(movie, rating) 中,没有参数可以假定为具有value 属性的对象?
function controller($http) {
var model = this;
model.movies = [];
model.$onInit = function() {
fetchMovies($http).then(function(movies) { model.movies = movies; });
};
model.upRating = function(movie) { if(movie.rating < 5) { movie.rating += 1; } };
model.downRating = function(movie) { if(movie.rating > 1) { movie.rating -= 1; } };
model.setRating = function(movie, rating) { // rating is int, and movie is string
movie.rating = rating;
};
【问题讨论】:
标签: javascript angularjs angularjs-components