范围&在angular1中触发

时间:2016-07-13 21:31:02

标签: javascript angularjs angularjs-directive angularjs-scope

为了理解以下有关trigger: "=trigger"

的代码,您能指出我应该查找的正确方向吗?
app.module.directive('messageModal', function ($compile) {
    return {
        scope: {
            trigger: "=trigger",
        },

        controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element, $attrs, $timeout) {
                $scope.trigger = function(title, message, modal_class, color, auto_hide){

我的理解是,通过scope: {},指令'messageModal'创建了一个全新的范围对象。但是trigger: "=trigger"做了什么?怎么样$scope.trigger

为了理解指令的作用,我需要一些关于我应该学习的方向。谢谢!

2 个答案:

答案 0 :(得分:2)

scope选项中的属性是每个属性与指令标记中的属性之间的映射。当您在某处使用它时。

Scope的属性值定义了范围属性的绑定方式:

  • =表示双向绑定
  • @表示文字绑定。
  • &表示功能绑定。

可以通过两种方式提供范围属性(使用上述任何绑定):

  • { some: "=" }表示scope属性及其HTML属性副本将共享相同的标识符。
  • { some: "=whatever" }允许您定义如何识别绑定到整个范围属性的属性。

隔离范围已经绑定了属性和属性后,您将访问它们并注入$scope并访问该属性:$scope.whatever

答案 1 :(得分:1)

触发'没有什么特别之处,它只是您可以用来与HTML指令进行通信的属性名称。

例如,如果你这样使用它:

               $product = $this->site->getProductByID($item['product_id']);
                $inventory = $this->site->getInventoryByID($product->id);

                if($pp_up === TRUE && (($product->quantity < 0) && ($product->parent_id != 0) &&  ($inventory->box_qty != 0)) === TRUE ){

                $s_Update = array(
                    'quantity' => ($product->quantity+$inventory->qty_per_box),
                     'id' => $inventory->ea_id
                    );
                   $this->db->where('id',$inventory->ea_id);
                   $this->db->update('products',$s_Update);

        // the query runs successfully up till here------------------------------------

            /*This Never perform any update */
                  if($this->db->affected_rows() > 0){

    $this->db->update('products', array('quantity' => ($product->quantity-1), array('id' => $inventory->box_id)));

然后在指令$ scope.trigger中将等于&#34;无论在这里&#34;。