动态一次性绑定或强制再次计算一次性绑定

时间:2014-12-18 15:56:53

标签: angularjs

在角度1.3中,有一个时间绑定:: 为了减少观察者,我想在我的指令中使用它。

问题是在某些情况下我需要正常绑定(没有::)。

我是否必须使用两个不同的指令,或者有一个使用“动态”::属性的解决方案? 或者也许有可能强迫角度再一次计算一次性绑定(在该指令中)?

我的自定义指令是这样的:

"<span ng-switch=\"::kolumna.typ_pokaz\">" +
            "<span ng-switch-when=\"cena_waluta\" ng-bind=\"model.ngModel|waluta:ngModel.waluta\"></span>" +
            "<span ng-switch-when=\"cena\" waluta-domyslna=\"model.ngModel\"></span>" +
            "<span ng-switch-default ng-bind-html=\"model.ngModel\"></span>" +
"</span>"

在大多数情况下,model.ngModel可以是::model.ngModel,但并非总是如此。

2 个答案:

答案 0 :(得分:2)

您可以使用&#34;可选&#34;或&#34;动态&#34;一次性约束。它有点乱,但完全有可能。这是一个例子:

指令/组件内部:

    class maker:
        def parameter(self):
            temp = int (input ('At what temperature do you want to make \n'))
            return temp


        def make_item (self):
            def oven (self):
                oven_temp = 0
                while (oven_temp is not temp):
                    oven_temp += 1
                    print ("waiting for right oven temp")

            oven(self)


    person = maker ()
    person.parameter()
    person.make_item()

使用指令/组件:

<div ng-init="oneTimeBindingPrefix = oneTimeBinding ? '::' : ''">
    <div ng-bind="{{::oneTimeBindingPrefix}}{{theValue}}"></div>
</div>

Source

答案 1 :(得分:1)

你可以有多个模板 - 一个有一次绑定,一个没有 - 然后作为属性提供给指令。

app.directive('myDirective', function() {
    return {
      restrict: 'E',
      templateUrl: function($element, $attrs){
        return $attrs.tmpl;
      }
    };
});

标记看起来像这样

<my-directive tmpl="/path/to/only-once-template.html></my-directive>

<my-directive tmpl="/path/to/binding-template.html></my-directive>