Özelliklerin sayısının, seçili nesnelere bağlı olarak değişebileceği özellikler bölmesi oluşturmak istiyorum. o,AngularJS yönergesinde belirtilen dize türleri
<div ng-app="MyApp">
<div class="properties-pane" ng-controller="PropertiesPane">
<div ng-repeat="property in properties">
<property name="{{property.name}}" value="{{property.value}}">
</div>
</div>
</div>
Basit değildir:
Böyle kodu kullanarak, adını ve bir özelliğin değeri görüntüler property
denilen kendi direktifi ile yarattık? Bu, property.value
bir dize (DOM öğesinde bir öznitelik olarak) dönüştürülecek dışında, yalnızca iyi çalışır. Özellik değeri başka bir veri türü ise ne yapmalıyım? Örneğin bir nesne. (CoffeeScript cinsinden) uygulanması kalan kısmına bakın:
Birincisi,
İkinci: value.x olarak
MyApp = angular.module('MyApp', [])
MyApp.controller 'PropertiesPane', ($scope) ->
$scope.properties = [
# Note that value is an object, not a string:
{name: 'First', value: {x:0, y:0, z:42}},
{name: 'Second', value: {x:0, y:20, z:0}},
{name: 'Third', value: {x:1, y:1, z:1}},
]
MyApp.directive 'property', ($compile) ->
restrict: 'E'
transclude: false
replace: true
scope: {name: '@name', value: '@value'}
template: '<div>{{name}} {{value.x}}, {{value.y}}, {{value.z}}</div>'
# ^^^^^^^ ^^^^^^^ ^^^^^^^
# this doesn't work as value is a string, not an object
, y ve z bir ipe tanımsız olan, sonuç elbette
Üçüncüsü,
istediğim çıkışı:
İlk 0, 0, 42
İkinci 0, 20, 0 Üçüncü 1, 1, 1
Öğeleri programsal olarak nasıl ekleyeceğimi düşünmemde temel olarak yanlış bir şey olduğundan şüpheleniyorum. Böyle bir şeyi uygulamak için Açgözlü yolu nedir?
DÜZENLEME: Çözüm
, referans olarak yerine bir dize değeri olarak bir nesne olarak value
bakın direktifi =
yerine @
kullanın:
scope: {name: '@', value: '='}
Ve şablonda:
<property name="{{property.name}}" value="property.value">
{{}}
.
teşekkür ederiz! Bu yaptı! –
Bu, bazen istenmeyen bir etki olan bu yönerge için yalıtılmış bir alan oluşturur. – Uri
Ne demek düşünüyorum: kapsamını: {isim: '@', değer: '= adı'} Bu 'değerin' karma –